React Router的一个完整示例
2017-04-12 10:34
381 查看
本博文提供一个单网页结构网页(SPA)使用React Router路由控制跳转的完整例子。http://blog.csdn.net/future_todo/article/details/53036638
可以在我的github 中clone或者fork
https://github.com/zrysmt/react-demo/tree/master/demo03
关于配置可以查看我之前的一篇博客:一步一步进入React的世界(React+Webpack+ES6组合配置)。
![](https://raw.githubusercontent.com/zrysmt/mdPics/master/react/1.png)
- build是编译后的文件夹
- src 放入源码
+ components组件
+ global 通用组件和SCSS
+ … 分模块
+ app.js入口
- index.html
关于源码可以在开头给出的github中找到详细的完整例子,这里就介绍重要的几个文件源码
记住要安装react-router
2
3
4
5
6
7
8
9
10
11
12
13
14
15
关于react router的基础知识我们可以参考阮一峰老师的博客作为入门指导。
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
简单解释下:
组件App除了包含Nav组件,还应该包括主体内容
当使用index.html访问的时候,是在项目根目录下,这样会先加载APP组件,APP组件包含
2
3
4
/components/global/menuLi.jsx
/components/global/menu.jsx
最小一块组件menuLi.jsx
2
3
4
5
6
7
8
9
10
11
12
13
14
15
- Nav组件 menu.jsx
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/components/home/home.jsx,示例比较简单
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
12
其余几个组件不一一列出了
可以在我的github 中clone或者fork,查看完整的例子代码
参考阅读:
React Router 使用教程–阮一峰
版权声明:本文为博主原创文章,转载请注明出处和原文链接。
可以在我的github 中clone或者fork
https://github.com/zrysmt/react-demo/tree/master/demo03
关于配置可以查看我之前的一篇博客:一步一步进入React的世界(React+Webpack+ES6组合配置)。
1.整个目录结构
![](https://raw.githubusercontent.com/zrysmt/mdPics/master/react/1.png)
- build是编译后的文件夹
- src 放入源码
+ components组件
+ global 通用组件和SCSS
+ … 分模块
+ app.js入口
- index.html
2.源码
关于源码可以在开头给出的github中找到详细的完整例子,这里就介绍重要的几个文件源码 记住要安装react-router
npm i react-router -S1
2.1 index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Our Home,Our Heart</title> <meta name="viewport" content="width=device-width,initial-scale = 1.0,user-scalable=no"> </head> <body> <div id="content"> </div> <script src="build/bundle.js"></script> </body> </html>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2.2 入口文件app.js
关于react router的基础知识我们可以参考阮一峰老师的博客作为入门指导。import React from 'react'; import ReactDOM from 'react-dom'; import {Router,Route,IndexRoute,hashHistory} from 'react-router'; import './components/global/global.scss'; import Nav from './components/global/menu'; import Home from './components/home/home'; import Story from './components/story/story'; class App extends React.Component{ render(){ return( <div> <Nav/> {this.props.children} </div> ) } } ReactDOM.render(( <Router history={hashHistory}> <Route path="/" component={App}> <IndexRoute component={Home}/> <Route path="/Story" component={Story}/> </Route> </Router> ),document.body );1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
简单解释下:
组件App除了包含Nav组件,还应该包括主体内容
当使用index.html访问的时候,是在项目根目录下,这样会先加载APP组件,APP组件包含
{this.props.children},便会加载
<IndexRoute/>里面定义的组件Home。用户访问’/’相当于:
<App> <Nav/> <Home/> </App>1
2
3
4
2.3 Nav组件
/components/global/menuLi.jsx /components/global/menu.jsx
最小一块组件menuLi.jsx
import React from 'react'; import {Link} from 'react-router'; class MenuLi extends React.Component{ render(){ let linkTo = this.props.name =="Home"?"/":"/"+this.props.name; return ( <li> <Link to={linkTo}> {this.props.name} </Link> </li> ); } } export default MenuLi;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Link组件用于取代
<a>元素,生成一个链接,允许用户点击后跳转到另一个路由
- Nav组件 menu.jsx
import React from 'react'; import ReactDOM from 'react-dom'; import MenuLi from './menuLi'; import './menu.scss'; let menuLis = ["Home","Story","Travel","TimeLine","Future"]; class MenuUl extends React.Component{ render(){ return( <ul> { menuLis.map(function(menuLi) { return <MenuLi name={menuLi}/> }) } </ul> ); } } class Nav extends React.Component{ render(){ return( <nav> <div id="menu"> <MenuUl/> </div> </nav> ) } } export default Nav;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2.4 Home组件
/components/home/home.jsx,示例比较简单import React from 'react'; import ReactDOM from 'react-dom'; import "./home.scss"; class Home extends React.Component{ render(){ return ( <h5>这是home</h5> ); } } export default Home;1
2
3
4
5
6
7
8
9
10
11
2.5 Story组件
import React from 'react'; import ReactDOM from 'react-dom'; import "./story.scss"; class Story extends React.Component{ render(){ return ( <h5>这是story</h5> ); } } export default Story;1
2
3
4
5
6
7
8
9
10
11
12
其余几个组件不一一列出了
可以在我的github 中clone或者fork,查看完整的例子代码
参考阅读:
React Router 使用教程–阮一峰
版权声明:本文为博主原创文章,转载请注明出处和原文链接。
相关文章推荐
- 一个完整的react router 4.0嵌套路由的例子如下
- react-redux-router 一个完整项目解读(附源码)
- 用React实现一个完整的TodoList的示例代码
- 一个完整的Web应用程序部署示例
- 相对比较完整的一个序列化示例。
- 一个完整的SQL SERVER数据库全文索引的示例
- 全文索引原理和一个完整的SQL SERVER数据库全文索引的示例(转)
- 一个完整的Oracle触发器示例
- Delphi驱动开发研究第三篇--一个完整的驱动程序示例
- 一个完整的SQL SERVER数据库全文索引的示例
- Java Socket编程,一个完整的简单通信示例
- 一个Asp.net下word在线编辑、全文关键字搜索的完整示例
- 一个完整的SQL SERVER数据库全文索引的示例
- 一个完整的新浪微博客户端android版OAuth认证示例
- 一个完整的SQL SERVER数据库全文索引的示例
- J2EE实践第三部分-创建一个完整的EJB Web应用(JPA示例)
- 一个完整的SQL SERVER数据库全文索引的示例
- 一个完整的SQLSERVER数据库全文索引的示例
- ddd官方终于发布了一个完整的示例
- NTP校时源码(一个教完整的NTP服务项目示例,摘自国嵌实验手册)