Browse Source

change to new context api

pull/1392/head
jim 8 years ago
committed by 陈帅
parent
commit
bf73643b13
  1. 4
      package.json
  2. 15
      src/components/PageHeader/index.js
  3. 18
      src/layouts/BasicLayout.js
  4. 3
      src/layouts/MeunContext.js
  5. 7
      src/layouts/PageHeaderLayout.js

4
package.json

@ -23,8 +23,8 @@
"dependencies": { "dependencies": {
"@antv/data-set": "^0.8.0", "@antv/data-set": "^0.8.0",
"@babel/polyfill": "^7.0.0-beta.36", "@babel/polyfill": "^7.0.0-beta.36",
"@types/react": "^16.3.5", "@types/react": "^16.3.8",
"@types/react-dom": "^16.0.4", "@types/react-dom": "^16.0.5",
"antd": "^3.4.0", "antd": "^3.4.0",
"babel-runtime": "^6.9.2", "babel-runtime": "^6.9.2",
"bizcharts": "^3.1.3-beta.1", "bizcharts": "^3.1.3-beta.1",

15
src/components/PageHeader/index.js

@ -1,5 +1,4 @@
import React, { PureComponent, createElement } from 'react'; import React, { PureComponent, createElement } from 'react';
import PropTypes from 'prop-types';
import pathToRegexp from 'path-to-regexp'; import pathToRegexp from 'path-to-regexp';
import { Breadcrumb, Tabs } from 'antd'; import { Breadcrumb, Tabs } from 'antd';
import classNames from 'classnames'; import classNames from 'classnames';
@ -20,12 +19,6 @@ export function getBreadcrumb(breadcrumbNameMap, url) {
} }
export default class PageHeader extends PureComponent { export default class PageHeader extends PureComponent {
static contextTypes = {
routes: PropTypes.array,
params: PropTypes.object,
location: PropTypes.object,
breadcrumbNameMap: PropTypes.object,
};
onChange = key => { onChange = key => {
if (this.props.onTabChange) { if (this.props.onTabChange) {
this.props.onTabChange(key); this.props.onTabChange(key);
@ -33,10 +26,10 @@ export default class PageHeader extends PureComponent {
}; };
getBreadcrumbProps = () => { getBreadcrumbProps = () => {
return { return {
routes: this.props.routes || this.context.routes, routes: this.props.routes,
params: this.props.params || this.context.params, params: this.props.params,
routerLocation: this.props.location || this.context.location, routerLocation: this.props.location,
breadcrumbNameMap: this.props.breadcrumbNameMap || this.context.breadcrumbNameMap, breadcrumbNameMap: this.props.breadcrumbNameMap,
}; };
}; };
// Generated according to props // Generated according to props

18
src/layouts/BasicLayout.js

@ -1,5 +1,4 @@
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import { Layout } from 'antd'; import { Layout } from 'antd';
import DocumentTitle from 'react-document-title'; import DocumentTitle from 'react-document-title';
import { connect } from 'dva'; import { connect } from 'dva';
@ -14,6 +13,7 @@ import Sidebar from '../components/Sidebar';
import logo from '../assets/logo.svg'; import logo from '../assets/logo.svg';
import Footer from './Footer'; import Footer from './Footer';
import Header from './Header'; import Header from './Header';
import Context from './MeunContext';
const { Content } = Layout; const { Content } = Layout;
const { AuthorizedRoute, check } = Authorized; const { AuthorizedRoute, check } = Authorized;
@ -61,11 +61,7 @@ const query = {
}; };
class BasicLayout extends React.PureComponent { class BasicLayout extends React.PureComponent {
static childContextTypes = { getContext() {
location: PropTypes.object,
breadcrumbNameMap: PropTypes.object,
};
getChildContext() {
const { location, routerData, menuData } = this.props; const { location, routerData, menuData } = this.props;
return { return {
location, location,
@ -165,10 +161,12 @@ class BasicLayout extends React.PureComponent {
<DocumentTitle title={this.getPageTitle()}> <DocumentTitle title={this.getPageTitle()}>
<ContainerQuery query={query}> <ContainerQuery query={query}>
{params => ( {params => (
<div className={classNames(params)}> <Context.Provider value={this.getContext()}>
{layout} <div className={classNames(params)}>
<RightSidebar onChange={this.changeSetting} /> {layout}
</div> <RightSidebar onChange={this.changeSetting} />
</div>
</Context.Provider>
)} )}
</ContainerQuery> </ContainerQuery>
</DocumentTitle> </DocumentTitle>

3
src/layouts/MeunContext.js

@ -0,0 +1,3 @@
import { createContext } from 'react';
export default createContext();

7
src/layouts/PageHeaderLayout.js

@ -3,11 +3,16 @@ import { Link } from 'dva/router';
import PageHeader from '../components/PageHeader'; import PageHeader from '../components/PageHeader';
import GridContent from './GridContent'; import GridContent from './GridContent';
import styles from './PageHeaderLayout.less'; import styles from './PageHeaderLayout.less';
import MeunContext from './MeunContext';
export default ({ children, wrapperClassName, top, ...restProps }) => ( export default ({ children, wrapperClassName, top, ...restProps }) => (
<div style={{ margin: '-24px -24px 0' }} className={wrapperClassName}> <div style={{ margin: '-24px -24px 0' }} className={wrapperClassName}>
{top} {top}
<PageHeader key="pageheader" {...restProps} linkElement={Link} /> <MeunContext.Consumer>
{value => {
return <PageHeader {...value} key="pageheader" {...restProps} linkElement={Link} />;
}}
</MeunContext.Consumer>
{children ? ( {children ? (
<div className={styles.content}> <div className={styles.content}>
<GridContent>{children}</GridContent> <GridContent>{children}</GridContent>

Loading…
Cancel
Save