单页应用与多页应用
单页应用
1)一次性载入公共资源(js,css)
2)页面局部更新
3)页面间传递数据比较容易
多页应用
1)每次都重新载入公共资源
2)页面刷新
3)页面间传递数据比较不方便(url,本地存储等)
没有太多的介绍区别,反正就是多页应用每次都请求一个页面的地址,加载这个页面以及有关的所有资源,服务器压力比较大,而单页应用首次加载的时候比较久,之后变换URL只是更新视图。
react Router安装
有多个库,这里安装react-router-dom
1 | npm install react-router-dom |
react路由
两种方式:
1)HashRouter:利用hash实现路由切换
2)BrowserRouter:利用h5 api实现路由切换
实现一个简单的路由切换,三个分类,切换对应的视图。
目录结构:
index.js
1 | import React, { Component } from 'react'; |
my.js
1 | import React, { Component } from 'react' |
home.js
1 | import React, { Component } from 'react' |
list.js
1 | import React, { Component } from 'react' |
这时候hash值切换对应的路径,就会看到不同的视图。
同时简单实现一下的react-router-dom
context.js
1 | import React, { Component } from 'react' |
HashRouter.js
1 | import React, { Component } from 'react' |
Link.js
1 | import React, { Component } from 'react' |
Redirect.js
1 | import React, { Component } from 'react' |
Route.js
1 | import React, { Component } from 'react'; |
Switch.js
1 | import React, { Component } from 'react'; |
index.js
1 | import HashRouter from './HashRouter'; |
导入各个模块,再导出。
当然缺失了很多东西,只是简单实现。
路由跳转传参
写个简单例子吧
1 | import React, { Component } from 'react' |
点击Link的时候,会携带id
或者使用this.props.history.push('/list/userInfo/1');
1 | import React, { Component } from 'react' |
userInfo.js
1 | import React, { Component } from 'react' |