模块化react-router配置方法详解
react-router模块化配置
因为公司的需要最近踏进了react坑,一直在挖坑填坑,在路由这一块折腾得不行。
直接进入主题,配置react-router模块化
1.先下载react-router-dom
npm install react-router-dom --save
2.在相应的文件引入react-router-dom相应的模块
import { browserrouter as router, route, link } from "react-router-dom";
3.在src子创建一个module目录,接着在module目录在创建一个router.js文件,用来配置路由。
//router.js import index from '../components/index' import new from '../components/new' import newlist from '../components/newlist' import newcontent from '../components/newcontent' const routes = [ { path:"/", component:index, exact:true }, { path:"/new", component:new, routes:[ { path:"/new/", component:newcontent }, { path:"/new/newlist", component:newlist } ] }, ] export default routes
4.在app.js根目录添加相应的跳转路径。
//app.js import react from 'react'; import './app.css'; import { browserrouter as router, route, link } from "react-router-dom"; import router from "./modules/routers" function app() { return ( <router> <nav classname="nav"> <ul> <li> <link to="/">首页</link> </li> <li> <link to="/new">新闻</link> </li> </ul> </nav> { router.map((router,index)=>{ if(router.exact){ return <route exact key={index} path={router.path} render = { props =>( <router.component {...props} routes = {router.routes}/> ) } /> }else{ return <route key={index} path={router.path} render = { props =>( <router.component {...props} routes = {router.routes} /> ) } /> } }) } </router> ); } export default app;
注意点:嵌套路由千万不要在<route/>身上加上component={xxx.xxx},否则在子路由页码就接受不到父路由传递给子路由的数据,重要的事情说三篇
注意点:嵌套路由千万不要在<route/>身上加上component={xxx.xxx},否则在子路由页码就接受不到父路由传递给子路由的数据,重要的事情说三篇
注意点:嵌套路由千万不要在<route/>身上加上component={xxx.xxx},否则在子路由页码就接受不到父路由传递给子路由的数据,重要的事情说三篇
解析一下,<route/>里面的render,这是官方给出的一种固定写法,为了解决父路由传递数据给子路由接受不到的问题。render是一个对象,里面是一个箭头函数,箭头函数放回<router.component {...props} routes = {router.routes} />一个标签,router.component的router对于的是你map传进来的那个形参,传啥写啥;component 是配置文件对应的component ,routes 是传给子路由的数据、(子路由通过this.props.routes 接收)
5.在有子路由的页码配置跳转
import react ,{component} from 'react'; import { browserrouter as router, route, link } from "react-router-dom"; class new extends component{ render(){ return( <div classname="box"> <div classname="left"> <ul> <li> <link to="/new">new</link> </li> <li> <link to="/new/newlist">newlist</link> </li> </ul> </div> <div classname="right"> { this.props.routes.map((item,index)=>{ return <route key={index} exact path={item.path} component={item.component}></route> }) } </div> </div> ) } } export default new
最后的结果为:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。