最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

react router零基礎(chǔ)使用教程

 更新時(shí)間:2022年09月26日 17:04:23   作者:十九(一拖再拖)  
React-Router 路由庫(kù),是官方維護(hù)的路由庫(kù),事實(shí)上也是唯一可選的路由庫(kù)。它通過管理 URL,實(shí)現(xiàn)組件的切換和狀態(tài)的變化,開發(fā)復(fù)雜的應(yīng)用幾乎肯定會(huì)用到

安裝

既然學(xué)習(xí) react router 就免不了運(yùn)行 react

安裝 react

npx create-react-app my-app
cd my-app
npm start

安裝 react router

npm install react-router-dom

如果一切正常,就讓我們打開 index.js 文件。

配置路由

引入 react-router-dom 的 RouterProvider

import {RouterProvider} from 'react-router-dom'

設(shè)置

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <React.StrictMode>
    <RouterProvider router={routers}></RouterProvider>
  </React.StrictMode>
);

這里的 React.StrictMode 代表以嚴(yán)格模式執(zhí)行其包含的內(nèi)容。

為了管理路由,讓我們?cè)賱?chuàng)建一個(gè) root.js 文件

內(nèi)容如下:

文件:router.js

import {createBrowserRouter} from 'react-router-dom'
import App from '../App.js'
const router =  createBrowserRouter ([
    {
        path:'/',
        element:<App />,
    }
])
export default router;

添加一個(gè)新頁(yè)面測(cè)試路由

新建文件:

test.js

export default function Test(){
    return(
        <div>測(cè)試頁(yè)面</div>
    )
}

在 router.js 引入

import {createBrowserRouter} from 'react-router-dom'
import App from '../App.js'
import Test from '../test.js'
const router =  createBrowserRouter ([
    {
        path:'/',
        element:<App />,
    },
    {
        path:'/test',
        element:<Test />
    }
])
export default router;

保存

在瀏覽器訪問 http://localhost:3000/test

你應(yīng)該可以看到:

配置未找到的路由

現(xiàn)在我們有 App.js 和 test.js 兩個(gè)頁(yè)面,如果訪問 http://localhost:3000/hello 會(huì)出現(xiàn)什么呢?

這是內(nèi)置的頁(yè)面,提醒用戶沒有找到頁(yè)面。

接下來使用美化或者自定義的頁(yè)面:

創(chuàng)建文件:

error.js

export default function Error(){
    return (
        <h1>Page not found</h1>
    )
}

使用 errorElement屬性 對(duì)應(yīng)這個(gè)頁(yè)面:

import {createBrowserRouter} from 'react-router-dom'
import App from '../App.js'
import Test from '../test.js'
import Error from '../error.js'
const router =  createBrowserRouter ([
    {
        path:'/',
        element:<App />,
        errorElement:<Error />
    },
    {
        path:'/test',
        element:<Test />
    }
])
export default router;

繼續(xù)請(qǐng)求 http://localhost:3000/hello

我們剛才自定義的頁(yè)面成功展示出來了。

跳轉(zhuǎn)頁(yè)面

跳轉(zhuǎn)頁(yè)面有很多,這里取兩種方式,一是通過 dom 標(biāo)簽,二是通過js

通過 js

使用 useNavigate 跳轉(zhuǎn)頁(yè)面:

看起來就像這樣:

test.js

import { useNavigate } from "react-router-dom";
function Test () {
    const navigate = useNavigate();
    function toTest2(){
        navigate("/test2",{
            state:'anny'
        });
    }
    return(
        <div onClick={toTest2}>跳轉(zhuǎn)頁(yè)面</div>
    )
}
export default Test

使用 useLocation 接收值:

import {useLocation} from 'react-router-dom'
export default function Test2(){
    let location = useLocation();
    return (
        <div>頁(yè)面Test2 接收到的值為 {location.state}</div>
    )
}

通過 dom

通過 Link 傳值跳轉(zhuǎn):

import {Link } from "react-router-dom";
function Test () {
    return(
        <div>
            <Link to="/test2" state={'anny'} >跳轉(zhuǎn)頁(yè)面</Link>
        </div>
    )
}
export default Test

使用 useLocation 接收值:

import {useLocation} from 'react-router-dom'
export default function Test2(){
    let location = useLocation();
    return (
        <div>頁(yè)面Test2 接收到的值為 {location.state}</div>
    )
}

嵌套頁(yè)面

平時(shí)寫管理后臺(tái),經(jīng)常會(huì)看到左右分布的布局,如果僅僅依靠 1-5 節(jié)的內(nèi)容肯定很難實(shí)現(xiàn),接下來看一下 根布局。

根布局使用 :

創(chuàng)建一個(gè) 父頁(yè)面,父頁(yè)面放置兩個(gè) 鏈接:

parent.js

import { Link, Outlet } from "react-router-dom";
function Parent(){
    return(
       <div>
        <Link to={'/parent/page1'}>show page1</Link>
        <Link to={'/parent/page2'}>show page2</Link>
        <Outlet></Outlet>
       </div>
    )
}
export default Parent;

繼續(xù)創(chuàng)建 兩個(gè)頁(yè)面 page1.js page2.js

page1.js

function Page1(){
    return(
        <div>i am page1</div>
    )
}
export default Page1;

page2.js

function Page2(){
    return(
        <div>i am page2</div>
    )
}
export default Page2;

修改我們的 router.js 文件:

import {createBrowserRouter} from 'react-router-dom'
import App from '../App.js'
import Test from '../test.js'
import Error from '../error.js'
import Parent from '../parent.js'
import Page1 from '../page1.js'
import Page2 from '../page2.js'
const router =  createBrowserRouter ([
    {
        path:'/',
        element:<App />,
        errorElement:<Error />,
    },
    {
        path:'/test',
        element:<Test />
    },
    {
        path:'/parent',
        element:<Parent />,
        children:[
            {
                path:'/parent/page1',
                element:<Page1 />
            },
            {
                path:'/parent/page2',
                element:<Page2 />
            }
        ]
    }
])
export default router;

到這里還差一步,就是使用重要的標(biāo)簽 <Outlet>

修改我們的父頁(yè)面

parent.js

import { Link, Outlet } from "react-router-dom";
function Parent(){
    return(
       <div>
        <Link to={'/parent/page1'}>show page1</Link>
        <Link to={'/parent/page2'}>show page2</Link>
        <Outlet></Outlet>
       </div>
    )
}
export default Parent;

保存:

接下來訪問 http://localhost:3000/parent 你將看到:

分別點(diǎn)擊 show page1show page2 你將看到不同的效果。

如果你想將第一個(gè)子組件默認(rèn)展示出來,你可以將 router.js 改成如下:

    {
        path:'/parent',
        element:<Parent />,
        children:[
            {
                path:'/parent',
                element:<Page1 />
            },
            {
                path:'/parent/page2',
                element:<Page2 />
            }
        ]
    }

再看一下效果:

到此這篇關(guān)于react router零基礎(chǔ)使用教程的文章就介紹到這了,更多相關(guān)react router內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue后臺(tái)管理系統(tǒng)權(quán)限控制與動(dòng)態(tài)路由的實(shí)現(xiàn)

    Vue后臺(tái)管理系統(tǒng)權(quán)限控制與動(dòng)態(tài)路由的實(shí)現(xiàn)

    本文主要介紹了Vue后臺(tái)管理系統(tǒng)權(quán)限控制與動(dòng)態(tài)路由的實(shí)現(xiàn),可以根據(jù)用戶的角色靈活控制頁(yè)面訪問權(quán)限,提高系統(tǒng)的安全性和用戶體驗(yàn),感興趣的可以了解一下
    2025-04-04
  • vue單向數(shù)據(jù)流的深入理解

    vue單向數(shù)據(jù)流的深入理解

    隨著前端的項(xiàng)目的越來越復(fù)雜,出現(xiàn)了一堆概念來降低開發(fā)的復(fù)雜性,單向數(shù)據(jù)流就是其中一個(gè),下面這篇文章主要給大家介紹了關(guān)于vue單向數(shù)據(jù)流的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • vue將毫秒數(shù)轉(zhuǎn)化為正常日期格式的實(shí)例

    vue將毫秒數(shù)轉(zhuǎn)化為正常日期格式的實(shí)例

    今天小編就為大家分享一篇vue將毫秒數(shù)轉(zhuǎn)化為正常日期格式的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 詳解Element-UI中上傳的文件前端處理

    詳解Element-UI中上傳的文件前端處理

    這篇文章主要介紹了詳解Element-UI中上傳的文件前端處理,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Vue的緩存方法示例詳解

    Vue的緩存方法示例詳解

    這篇文章主要給大家介紹了關(guān)于Vue緩存方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • vue如何實(shí)現(xiàn)el-select下拉選項(xiàng)的懶加載

    vue如何實(shí)現(xiàn)el-select下拉選項(xiàng)的懶加載

    這篇文章主要介紹了vue如何實(shí)現(xiàn)el-select下拉選項(xiàng)的懶加載,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue-auto-focus: 控制自動(dòng)聚焦行為的 vue 指令方法

    vue-auto-focus: 控制自動(dòng)聚焦行為的 vue 指令方法

    今天小編就為大家分享一篇vue-auto-focus: 控制自動(dòng)聚焦行為的 vue 指令方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • vscode配置@路徑提示方式,并解決vue文件內(nèi)失效的問題

    vscode配置@路徑提示方式,并解決vue文件內(nèi)失效的問題

    這篇文章主要介紹了vscode配置@路徑提示方式,并解決vue文件內(nèi)失效的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Vue+ElementUI踩坑之動(dòng)態(tài)顯示/隱藏表格的列el-table-column問題

    Vue+ElementUI踩坑之動(dòng)態(tài)顯示/隱藏表格的列el-table-column問題

    這篇文章主要介紹了Vue+ElementUI踩坑之動(dòng)態(tài)顯示/隱藏表格的列el-table-column問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • vue.js通過自定義指令實(shí)現(xiàn)數(shù)據(jù)拉取更新的實(shí)現(xiàn)方法

    vue.js通過自定義指令實(shí)現(xiàn)數(shù)據(jù)拉取更新的實(shí)現(xiàn)方法

    數(shù)據(jù)拉取更新這個(gè)功能相信大家基本都見過,但是如果要做起來卻不止如何做起,所以這篇文章給大家分享了vue.js通過自定義指令實(shí)現(xiàn)的方法,閱讀本文需要對(duì)vue有一定理解,有需要的朋友們下面來一起看看吧。
    2016-10-10

最新評(píng)論

崇信县| 翼城县| 白沙| 天等县| 枝江市| 尼勒克县| 樟树市| 都昌县| 武隆县| 景东| 通河县| 栖霞市| 雷州市| 文山县| 宁陕县| 乌鲁木齐市| 武鸣县| 田阳县| 永仁县| 织金县| 祥云县| 北宁市| 河曲县| 磴口县| 宽城| 临西县| 门头沟区| 呼和浩特市| 抚远县| 翼城县| 汝州市| 汕尾市| 溧水县| 新宾| 营口市| 汝城县| 庄河市| 阿克陶县| 蓬溪县| 南阳市| 湘乡市|