react 路由Link配置詳解

1、Link的to屬性

(1)放置路由路徑
(2)放置對象,且為規定格式
{pathname:”/xx”,search:’?鍵值對’,hash:”#xxx”,state:{鍵值對}}
會自動將pathname、search、hash拼接在url路徑上,state為傳入的參數
可通過輸出props查看對象內的信息
this.props.location.state.鍵名獲取state內的數據

2、Link的replace屬性

添加replace將跳轉前的上一個頁面替換成當前頁面,隻將當前頁面入棧

3、Link傳參

在to路徑後添加”/鍵值”
在路由route,path路徑後添加”/:鍵名”
在組件中,函數式組件:先傳入props形參,然後props.match.params.鍵名
類組件:this.props.match.params.鍵名

代碼示例:

import React,{Component} from 'react'
//import {Route,BrowserRouter,Link} from 'react-router-dom'
//將BrowserRouter重命名為Router
import {BrowserRouter as Router,Link,Route} from 'react-router-dom'
import { Button } from 'antd';
import './App.css';

function Home()
{
  return(
      <div>admin首頁</div>
    )
}

function Me(props)
{
  console.log(props)
  return(
      <div>admin我的</div>
    )
}

function Product(props)
{
  return(
      <div>admin產品頁面:{props.match.params.id}</div>
    )
}

export default class App extends Component{
   constructor()
    {
      super();
    }
    render()
    {
    {/*若將路徑寫成對象形式,且和下面相同,會自動將pathname、search、hash自動拼接在url路徑上,state為傳入組件的數據*/}
      let obj={pathname:"/me",search:'?username=admin',hash:"#abc",state:{msg:'hello'}}
      return(
        <div id='app'>
      {/*BrowserRouter可以放多個*/}
          <Router>
        
        {/*因為組件也是返回html內容,故可以直接通過函數返回html內容充當組件,但不能直接寫html內容*/}
          <div>  
            <Route path="/"  exact component={()=><div>首頁</div>}></Route>
            <Route path="/product"  component={()=><div>product</div>}></Route>
            <Route path="/me"  component={()=><div>me</div>}></Route>
          </div>
          {/*<Route path="/" component={function(){return <div>首頁2</div>}}></Route>*/}

          </Router>
        

          
          {/*BrowserRouter內部隻能有一個根容器,包裹其他內容*/}
        {/*添加basename='/xx'後,點擊Link跳轉其他路由時,url會將/xx添加到路由名前,所以使用路由路徑和加瞭admin的路由路徑都能匹配該路由*/}
          <Router basename='/admin'>
            <div>
                <div className='nav'>
                    <Link to='/'>Home</Link>
                    <Link to='/product/123'>Product</Link>
                  {/*可在對應的組件中輸出props查看傳入的對象的信息,添加replace將跳轉前的上一個頁面替換成當前頁面,隻將當前頁面入棧*/}
                    <Link to={obj} replace>個人中心</Link>
                </div>

                <Route path="/" exact component={Home}></Route>
                <Route path="/product/:id"  component={Product}></Route>
                <Route path="/me" exact component={Me}></Route>
            </div>
          </Router>

        </div>
        
      )
    }
}

 到此這篇關於react 路由Link配置詳解的文章就介紹到這瞭,更多相關react 路由Link內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: