溫馨提示×

溫馨提示×

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

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

react?router如何使用

發(fā)布時間:2022-09-28 14:49:42 來源:億速云 閱讀:120 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要講解了“react router如何使用”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“react router如何使用”吧!

    安裝

    既然學(xué)習(xí) react router 就免不了運行 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)容。

    為了管理路由,讓我們再創(chuàng)建一個 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;

    添加一個新頁面測試路由

    新建文件:

    test.js

    export default function Test(){
        return(
            <div>測試頁面</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)該可以看到:

    react?router如何使用

    配置未找到的路由

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

    react?router如何使用

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

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

    創(chuàng)建文件:

    error.js

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

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

    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ù)請求 http://localhost:3000/hello

    react?router如何使用

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

    跳轉(zhuǎn)頁面

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

    通過 js

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

    看起來就像這樣:

    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)頁面</div>
        )
    }
    export default Test

    使用 useLocation 接收值:

    import {useLocation} from 'react-router-dom'
    export default function Test2(){
        let location = useLocation();
        return (
            <div>頁面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)頁面</Link>
            </div>
        )
    }
    export default Test

    使用 useLocation 接收值:

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

    嵌套頁面

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

    根布局使用 :

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

    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)建 兩個頁面 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>

    修改我們的父頁面

    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 你將看到:

    react?router如何使用

    分別點擊 show page1show page2 你將看到不同的效果。

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

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

    再看一下效果:

    react?router如何使用

    感謝各位的閱讀,以上就是“react router如何使用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對react router如何使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

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

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

    AI