react router如何使用(react,router,开发技术)

时间:2024-05-03 17:32:34 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    安装

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

    设置

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

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

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

    内容如下:

    文件:router.js

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

    添加一个新页面测试路由

    新建文件:

    test.js

    exportdefaultfunctionTest(){
    return(
    <div>测试页面</div>
    )
    }

    在 router.js 引入

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

    保存

    在浏览器访问 http://localhost:3000/test

    你应该可以看到:

    react router如何使用

    配置未找到的路由

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

    react router如何使用

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

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

    创建文件:

    error.js

    exportdefaultfunctionError(){
    return(
    <h2>Pagenotfound</h2>
    )
    }

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

    import{createBrowserRouter}from'react-router-dom'
    importAppfrom'../App.js'
    importTestfrom'../test.js'
    importErrorfrom'../error.js'
    constrouter=createBrowserRouter([
    {
    path:'/',
    element:<App/>,
    errorElement:<Error/>
    },
    {
    path:'/test',
    element:<Test/>
    }
    ])
    exportdefaultrouter;

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

    react router如何使用

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

    跳转页面

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

    通过 js

    使用 useNavigate 跳转页面:

    看起来就像这样:

    test.js

    import{useNavigate}from"react-router-dom";
    functionTest(){
    constnavigate=useNavigate();
    functiontoTest2(){
    navigate("/test2",{
    state:'anny'
    });
    }
    return(
    <divonClick={toTest2}>跳转页面</div>
    )
    }
    exportdefaultTest

    使用 useLocation 接收值:

    import{useLocation}from'react-router-dom'
    exportdefaultfunctionTest2(){
    letlocation=useLocation();
    return(
    <div>页面Test2接收到的值为{location.state}</div>
    )
    }

    通过 dom

    通过 Link 传值跳转:

    import{Link}from"react-router-dom";
    functionTest(){
    return(
    <div>
    <Linkto="/test2"state={'anny'}>跳转页面</Link>
    </div>
    )
    }
    exportdefaultTest

    使用 useLocation 接收值:

    import{useLocation}from'react-router-dom'
    exportdefaultfunctionTest2(){
    letlocation=useLocation();
    return(
    <div>页面Test2接收到的值为{location.state}</div>
    )
    }

    嵌套页面

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

    根布局使用 :

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

    parent.js

    import{Link,Outlet}from"react-router-dom";
    functionParent(){
    return(
    <div>
    <Linkto={'/parent/page1'}>showpage1</Link>
    <Linkto={'/parent/page2'}>showpage2</Link>
    <Outlet></Outlet>
    </div>
    )
    }
    exportdefaultParent;

    继续创建 两个页面 page1.js page2.js

    page1.js

    functionPage1(){
    return(
    <div>iampage1</div>
    )
    }
    exportdefaultPage1;

    page2.js

    functionPage2(){
    return(
    <div>iampage2</div>
    )
    }
    exportdefaultPage2;

    修改我们的 router.js 文件:

    import{createBrowserRouter}from'react-router-dom'
    importAppfrom'../App.js'
    importTestfrom'../test.js'
    importErrorfrom'../error.js'
    importParentfrom'../parent.js'
    importPage1from'../page1.js'
    importPage2from'../page2.js'
    constrouter=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/>
    }
    ]
    }
    ])
    exportdefaultrouter;

    到这里还差一步,就是使用重要的标签 <Outlet>

    修改我们的父页面

    parent.js

    import{Link,Outlet}from"react-router-dom";
    functionParent(){
    return(
    <div>
    <Linkto={'/parent/page1'}>showpage1</Link>
    <Linkto={'/parent/page2'}>showpage2</Link>
    <Outlet></Outlet>
    </div>
    )
    }
    exportdefaultParent;

    保存:

    接下来访问 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如何使用的详细内容,希望对您有所帮助,信息来源于网络。
    上一篇:Spring AOP怎么实现打印HTTP接口出入参日志下一篇:

    19 人围观 / 0 条评论 ↓快速评论↓

    (必须)

    (必须,保密)

    阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18