- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第
react中路由和按需加载的问题
目录react路由和按需加载问题1基本的路由设置2如何完成路由的菜单部分3如何将每个路由的js文件分开输出4react-router按需加载配置5最后效果react路由的基本使用1.先下包2.导入并使用3.使用HashRouter包裹整个应用4.使用Link指定导航链接5.使用Route指定路由规则(哪个路径展示哪个组件)6.精确匹配:exact7.Switch8.处理404页Redirect
react路由和按需加载问题
1基本的路由设置
react-router可以解决路由问题,只需要添加[基于react-router4.x]
yarnaddreact-router-dom
然后在index.js中引入它,使用:
import{Link,BrowserRouter,Switch,Route}fromreact-router-dom;
ReactDOM.render((
BrowserRouter
Switch
Routepath=/listcomponent={ListDemo}/
Routepath=/acomponent={A}/
Routepath=/bcomponent={B}/
/Switch
/BrowserRouter
),mountdom)
这样就完成了路由的设置,而超链接则可以使用提供的Link组件
Linkto=/aa/Link
等价于直接写ahref=/aa/a。
2如何完成路由的菜单部分
在每个menu中传一个url属性,然后url代表那个地方被高亮,每个路由都重新创建一个menu即如下:
BrowserRouter
Switch
Routeexactpath=/render={props=Menu{...props}url=listListDemo//SiderDemo}/
Routepath=/listrender={props=Menu{...props}url=listListDemo//SiderDemo}/
Routepath=/arender={props=Menu{...props}url=aA//SiderDemo}/
Routepath=/brender={props=Menu{...props}url=bB//SiderDemo}/
/Switch
/BrowserRouter
但是每个页面的初次加载都会闪一下,重新加载了js。要想不闪则需要路由嵌套:
//上来路由只匹配到Menu中
BrowserRouter
Switch
Routepath=/component={Menu}/
/Switch
/BrowserRouter
//上面的route就一个组件menu,在menu中再次定义route,可以实现路由嵌套
Menu
顶部/顶部
侧栏selectedurl={ps.location.pathname}
/侧栏
内容部分
Routeexactpath=/listcomponent={List}/
Routeexactpath=/acomponent={At}/
Routeexactpath=/bcomponent={Bt}/
/内容部分
Menu
这里主要是利用了每个页面都有的一个属性即props.location.pathname是路由属性
3如何将每个路由的js文件分开输出
1多入口文件的形式,但是不易于按需加载,只能是实现了分开输出,没啥用。一般写的都是单入口应用。
2异步import,或者require.ensure,然后在webpack中配置
output:{
filename:[name]-bundle.js,
chunkFilename:[name]-chunk.js,
path:__dirname+/dist
},
这样就生成一个bundle文件,多个chunk文件,name就是import的文件的名字,注意这里的注释是有用的直接决定了chunk输出的时候的[name]。
import(/*webpackChunkName:app*/./app).then(functio
文档评论(0)