【项目结构】

流程: 入口文件 -> 路由 -> layout -> Analysi/Monitor/Workspace

1.入口文件 -> src/index.js

2.组件 -> src/coms

3.布局 -> src/layout

4.路由 -> src/routes

【流程解析】

流程: 入口文件 -> 路由 -> layout -> Analysi/Monitor/Workspace

1.路由部分

//import React from 'react'; 引入类
//import { Component } from 'react'; 引入对象
import React, { Component } from 'react';
import {HashRouter, Route, Switch} from 'react-router-dom'; //引入布局和子组件
import BasicLayout from '../layout/layout';
import Analysis from '../coms/Analysis';
import Monitor from '../coms/Monitor';
import Workplace from '../coms/Workplace'; //分配路由
const BasicRoute = () => (
<HashRouter>
<Switch>
<Route exact path="/" component={BasicLayout}/>
<Route exact path="/Analysis" component={Analysis}/>
<Route path="/Monitor" component={Monitor}/>
<Route path="/Workplace" component={Workplace}/>
</Switch>
</HashRouter>
); export default BasicRoute;

2.布局部分(重点)

import React, { Component } from 'react';
import {Layout ,Menu,Icon} from 'antd';
import { Router, Route, Link,HashRouter } from 'react-router-dom'
import 'antd/dist/antd.min.css'
import BasicRoute from '../routes/router'; const { Header, Footer, Sider, Content } = Layout; export default class BasicLayout extends Component {
render() {
return (
<Layout>
<Sider width={256} style={{ minHeight: '100vh', color: 'white' }}> <Menu theme="dark" mode="inline" >
{/*定义了项目的link,会按照路由走*/}
<Menu.Item><Link to="/Analysis">Item1</Link></Menu.Item>
</Menu> </Sider>
<Layout >
<Header style={{ background: '#fff', textAlign: 'center', padding: 0 }}>Header</Header>
<Content style={{ margin: '24px 16px 0' }}>
<div style={{ padding: 24, background: '#fff', minHeight: 360 }}>
{/*Analysis.js文件引用了BasicLayout,并把自己的全部子节点(子组件)传过来*/}
{this.props.children} </div>
</Content>
<Footer style={{ textAlign: 'center' }}>Ant Design ©2018 Created by Ant UED</Footer>
</Layout>
</Layout>
)
}
}

3.子组件(Analysis.js) (出错点)

import React from 'react';
import BasicLayout from '../layout/layout';
export default () => {
//用BasicLayout标签包裹,内容传到layout.js的this.props.children部分
return (<BasicLayout><h1>Analysis Page</h1></BasicLayout>)
}

【效果】

【总结】

按照antd官网的教程走了一遍,发现不能局部刷新

原因在于官网用了umi框架。我是自己配置,有很多遗漏,导致子组件没有正确的传递到layout中。

最新文章

  1. conversations.im
  2. 树莓派系统介绍:DIetPi
  3. 刷新或关闭时调用onbeforeunload
  4. bzoj2441 小W的问题
  5. linux 项目环境搭建配置
  6. js的一些属性
  7. JavaScript 全栈工程师培训教程(来自阮一峰)
  8. 读取Properties键值对
  9. Python的平凡之路(8)
  10. java中关于时间的格式化
  11. 设计模式(五):PROTOTYPE原型模式 -- 创建型模式
  12. OpenCV之Python学习笔记
  13. 64位CentOS上编译 Hadoop 2.2.0
  14. ArcGIS 10.1 for Server 扩展开发(SOE)
  15. QA技术概览
  16. GitLab的安装及使用教程
  17. sublime下让代码居中
  18. PCIE错误分析
  19. js复制文本内容到剪贴板
  20. MySQL中SQL语句2

热门文章

  1. python学习日记(内置函数)
  2. LOJ #2135. 「ZJOI2015」幻想乡战略游戏(点分树)
  3. 一种使用 sprintf 导致死机的情况
  4. neutron-删除负载均衡器
  5. hdu 2829 Lawrence(四边形不等式优化dp)
  6. elasticsearch篇之mapping
  7. np.array.all()和np.array.any()函数
  8. busybox(三)最小根文件系统
  9. 深入剖析Kubernetes学习笔记:深入理解镜像(08)
  10. MySQL查看SQL语句执行效率