欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

模块化react-router配置方法详解

程序员文章站 2023-12-20 22:07:52
react-router模块化配置 因为公司的需要最近踏进了react坑,一直在挖坑填坑,在路由这一块折腾得不行。 直接进入主题,配置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

最后的结果为:

模块化react-router配置方法详解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

上一篇:

下一篇: