温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

react router如何使用

发布时间:2022-09-28 14:49:42 来源:亿速云 阅读:105 作者:iii 栏目:开发技术

这篇文章主要讲解了“react router如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“react router如何使用”吧!

    安装

    既然学习 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'

    设置

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

    这里的 React.StrictMode 代表以严格模式执行其包含的内容。

    为了管理路由,让我们再创建一个 root.js 文件

    内容如下:

    文件: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

    你应该可以看到:

    react router如何使用

    配置未找到的路由

    现在我们有 App.js 和 test.js 两个页面,如果访问 http://localhost:3000/hello 会出现什么呢?

    react router如何使用

    这是内置的页面,提醒用户没有找到页面。

    接下来使用美化或者自定义的页面:

    创建文件:

    error.js

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

    使用 errorElement属性 对应这个页面:

    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;

    继续请求 http://localhost:3000/hello

    react router如何使用

    我们刚才自定义的页面成功展示出来了。

    跳转页面

    跳转页面有很多,这里取两种方式,一是通过 dom 标签,二是通过js

    通过 js

    使用 useNavigate 跳转页面:

    看起来就像这样:

    test.js

    import { useNavigate } from "react-router-dom";
    function Test () {
        const navigate = useNavigate();
        function toTest2(){
            navigate("/test2",{
                state:'anny'
            });
        }
        return(
            <div onClick={toTest2}>跳转页面</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 传值跳转:

    import {Link } from "react-router-dom";
    function Test () {
        return(
            <div>
                <Link to="/test2" state={'anny'} >跳转页面</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>
        )
    }

    嵌套页面

    平时写管理后台,经常会看到左右分布的布局,如果仅仅依靠 1-5 节的内容肯定很难实现,接下来看一下 根布局。

    根布局使用 :

    创建一个 父页面,父页面放置两个 链接:

    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;

    继续创建 两个页面 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;

    到这里还差一步,就是使用重要的标签 <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 你将看到不同的效果。

    如果你想将第一个子组件默认展示出来,你可以将 router.js 改成如下:

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

    再看一下效果:

    react router如何使用

    感谢各位的阅读,以上就是“react router如何使用”的内容了,经过本文的学习后,相信大家对react router如何使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI