溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

模塊化react-router如何配置

發(fā)布時(shí)間:2021-08-17 13:59:20 來源:億速云 閱讀:157 作者:小新 欄目:web開發(fā)

這篇文章主要介紹了模塊化react-router如何配置,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

react-router模塊化配置

因?yàn)楣镜男枰罱みM(jìn)了react坑,一直在挖坑填坑,在路由這一塊折騰得不行。

直接進(jìn)入主題,配置react-router模塊化

1.先下載react-router-dom

npm install react-router-dom --save

2.在相應(yīng)的文件引入react-router-dom相應(yīng)的模塊

import { BrowserRouter as Router, Route, Link } from "react-router-dom";

3.在src子創(chuàng)建一個(gè)module目錄,接著在module目錄在創(chuàng)建一個(gè)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根目錄添加相應(yīng)的跳轉(zhuǎn)路徑。

//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="/">首頁(yè)</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;

注意點(diǎn):嵌套路由千萬(wàn)不要在<Route/>身上加上component={xxx.xxx},否則在子路由頁(yè)碼就接受不到父路由傳遞給子路由的數(shù)據(jù),重要的事情說三篇

注意點(diǎn):嵌套路由千萬(wàn)不要在<Route/>身上加上component={xxx.xxx},否則在子路由頁(yè)碼就接受不到父路由傳遞給子路由的數(shù)據(jù),重要的事情說三篇

注意點(diǎn):嵌套路由千萬(wàn)不要在<Route/>身上加上component={xxx.xxx},否則在子路由頁(yè)碼就接受不到父路由傳遞給子路由的數(shù)據(jù),重要的事情說三篇

解析一下,<Route/>里面的render,這是官方給出的一種固定寫法,為了解決父路由傳遞數(shù)據(jù)給子路由接受不到的問題。render是一個(gè)對(duì)象,里面是一個(gè)箭頭函數(shù),箭頭函數(shù)放回<router.component {...props} routes = {router.routes} />一個(gè)標(biāo)簽,router.component的router對(duì)于的是你map傳進(jìn)來的那個(gè)形參,傳啥寫啥;component 是配置文件對(duì)應(yīng)的component ,routes 是傳給子路由的數(shù)據(jù)、(子路由通過this.props.routes 接收)

5.在有子路由的頁(yè)碼配置跳轉(zhuǎn)

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

最后的結(jié)果為:

模塊化react-router如何配置

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“模塊化react-router如何配置”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI