用户若隐 發表於 2024-3-12 16:47:00

React — 路由

<p><span style="font-size: 18px"><strong>一、路由的使用</strong></span></p>
<p>1.安装react-router-dom</p>
<div class="cnblogs_code">
<pre>npm i react-router-dom </pre>
</div>
<p>2.配置</p>
<p>(1)创建router实例对象并且配置路由对应关系</p>
<p>(2)路由绑定</p>
<div class="cnblogs_code">
<pre>import {createBrowserRouter,RouterProvider} <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">react-router-dom</span><span style="color: rgba(128, 0, 0, 1)">'</span>

<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">(1)创建router实例对象并且配置路由对应关系</span>
<span style="color: rgba(0, 0, 255, 1)">const</span> router =<span style="color: rgba(0, 0, 0, 1)"> createBrowserRouter([
{
    path : </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">/login</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    element:</span>&lt;div&gt;我是登录页面&lt;/div&gt;<span style="color: rgba(0, 0, 0, 1)">
},
{
    path : </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">/article</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    element:</span>&lt;div&gt;我是文章页面&lt;/div&gt;<span style="color: rgba(0, 0, 0, 1)">
    },
])

</span><span style="color: rgba(0, 0, 255, 1)">const</span> root = ReactDOM.createRoot(document.getElementById(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">root</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">));
root.render(
</span>&lt;React.StrictMode&gt;<span style="color: rgba(0, 0, 0, 1)">
    {</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 路由绑定 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">}
    </span>&lt;RouterProvider router={router}&gt;

    &lt;/RouterProvider&gt;
&lt;/React.StrictMode&gt;<span style="color: rgba(0, 0, 0, 1)">
);</span></pre>
</div>
<p><span style="font-size: 18px"><strong>二、路由模块封装</strong></span></p>
<p><img src="https://img2024.cnblogs.com/blog/1483877/202403/1483877-20240312151647368-1221332900.png"></p>
<p>1.创建page文件夹</p>
<p><img src="https://img2024.cnblogs.com/blog/1483877/202403/1483877-20240312152602453-680303083.png"></p>
<p>2.创建router文件夹</p>
<div class="cnblogs_code">
<pre>import Login <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">../page/Login</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
import Article </span><span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">../page/Article</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;

import { createBrowserRouter } </span><span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">react-router-dom</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;

</span><span style="color: rgba(0, 0, 255, 1)">const</span> router =<span style="color: rgba(0, 0, 0, 1)"> createBrowserRouter([
    {
      path : </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">/login</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
      element : </span>&lt;Login&gt;&lt;/Login&gt;<span style="color: rgba(0, 0, 0, 1)">
    },
    {
      path : </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">/article</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
      element : </span>&lt;Article&gt;&lt;/Article&gt;<span style="color: rgba(0, 0, 0, 1)">
    }
])

export </span><span style="color: rgba(0, 0, 255, 1)">default</span> router</pre>
</div>
<p>3.应用入口文件渲染</p>
<div class="cnblogs_code">
<pre>import {createBrowserRouter,RouterProvider} <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">react-router-dom</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">

import router </span><span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">./router</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">const</span> root = ReactDOM.createRoot(document.getElementById(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">root</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">));
root.render(
</span>&lt;React.StrictMode&gt;
   
    &lt;RouterProvider router={router}&gt;

    &lt;/RouterProvider&gt;
&lt;/React.StrictMode&gt;<span style="color: rgba(0, 0, 0, 1)">
);</span></pre>
</div>
<p><span style="font-size: 18px"><strong>三、路由导航</strong></span></p>
<p>1.声明式导航</p>
<p>说明:声明式导航是指在模板中通过&lt;Link/&gt;组件描述要跳转到哪里</p>
<p>语法:&lt;Link to=''/article''&gt;跳转&lt;/Link&gt;</p>
<p>使用场景:菜单</p>
<div class="cnblogs_code">
<pre>import { Link } <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">react-router-dom</span><span style="color: rgba(128, 0, 0, 1)">"</span>

<span style="color: rgba(0, 0, 255, 1)">const</span> Login = ()=&gt;<span style="color: rgba(0, 0, 0, 1)">{
    </span><span style="color: rgba(0, 0, 255, 1)">return</span> &lt;&gt;
      &lt;div&gt;<span style="color: rgba(0, 0, 0, 1)">
            Login页面
            </span>&lt;Link to=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/article</span><span style="color: rgba(128, 0, 0, 1)">"</span>&gt;跳转文章&lt;/Link&gt;
      &lt;/div&gt;
   
    &lt;/&gt;<span style="color: rgba(0, 0, 0, 1)">
}
export </span><span style="color: rgba(0, 0, 255, 1)">default</span> Login</pre>
</div>
<p>2.编程式导航</p>
<p>说明:编程式导航是指通过‘useNavigate’钩子得到导航方法,然后通过调用方法以命令的形式进行路由跳转</p>
<p>语法:const navigate=uaeNavigate()&nbsp;navigate('/article')</p>
<p>使用场景:登录后跳转</p>
<div class="cnblogs_code">
<pre>import { Link,useNavigate } <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">react-router-dom</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 0, 255, 1)">const</span> Login = ()=&gt;<span style="color: rgba(0, 0, 0, 1)">{
    </span><span style="color: rgba(0, 0, 255, 1)">const</span> navigate =<span style="color: rgba(0, 0, 0, 1)"> useNavigate()
    </span><span style="color: rgba(0, 0, 255, 1)">return</span> &lt;&gt;
      &lt;div&gt;
            &lt;button onClick={()=&gt;navigate(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">/article</span><span style="color: rgba(128, 0, 0, 1)">'</span>)}&gt;命令式跳转2&lt;/button&gt;
      &lt;/div&gt;
    &lt;/&gt;<span style="color: rgba(0, 0, 0, 1)">
}
export </span><span style="color: rgba(0, 0, 255, 1)">default</span> Login</pre>
</div>
<p><span style="font-size: 18px"><strong>四、导航传参</strong></span></p>
<p>1.searchParams传参</p>
<div class="cnblogs_code">
<pre>      &lt;div&gt;
      
            &lt;button onClick={()=&gt;navigate(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">/article?id=1001&amp;name=jack哈啊哈</span><span style="color: rgba(128, 0, 0, 1)">'</span>)}&gt;传参&lt;/button&gt;
      &lt;/div&gt;   

<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">传参方:?分割参数 参数用&amp;连接多个参数</span></pre>
</div>
<div class="cnblogs_code">
<pre>import { useSearchParams } <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">react-router-dom</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 0, 255, 1)">const</span> Article = ()=&gt;<span style="color: rgba(0, 0, 0, 1)">{
   </span><span style="color: rgba(0, 0, 255, 1)">const</span> [<span style="color: rgba(0, 0, 255, 1)">params</span>] =<span style="color: rgba(0, 0, 0, 1)"> useSearchParams()
   </span><span style="color: rgba(0, 0, 255, 1)">const</span> id= <span style="color: rgba(0, 0, 255, 1)">params</span>.<span style="color: rgba(0, 0, 255, 1)">get</span>(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">id</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
   </span><span style="color: rgba(0, 0, 255, 1)">const</span> name= <span style="color: rgba(0, 0, 255, 1)">params</span>.<span style="color: rgba(0, 0, 255, 1)">get</span>(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">name</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
    </span><span style="color: rgba(0, 0, 255, 1)">return</span> &lt;&gt;
      &lt;div&gt;<span style="color: rgba(0, 0, 0, 1)">

            {id} </span>+<span style="color: rgba(0, 0, 0, 1)"> {name}
      </span>&lt;/div&gt;
    &lt;/&gt;<span style="color: rgba(0, 0, 0, 1)">
}
export </span><span style="color: rgba(0, 0, 255, 1)">default</span> Article</pre>
</div>
<p>2.params传参</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">const</span> router =<span style="color: rgba(0, 0, 0, 1)"> createBrowserRouter([
    {
      path : </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">/login</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
      element : </span>&lt;Login&gt;&lt;/Login&gt;<span style="color: rgba(0, 0, 0, 1)">
    },
    {
      path : </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">/article/:id/:name</span><span style="color: rgba(128, 0, 0, 1)">'</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">添加参数占位符</span>
      element : &lt;Article&gt;&lt;/Article&gt;<span style="color: rgba(0, 0, 0, 1)">
    }
])</span></pre>
</div>
<div class="cnblogs_code">
<pre> &lt;button onClick={()=&gt;navigate(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">/article/1001/jack</span><span style="color: rgba(128, 0, 0, 1)">'</span>)}&gt;params传参&lt;/button&gt; //直接/+参数值</pre>
</div>
<div class="cnblogs_code">
<pre>import { useParams, useSearchParams } <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">react-router-dom</span><span style="color: rgba(128, 0, 0, 1)">"</span>

<span style="color: rgba(0, 0, 255, 1)">const</span> Article = ()=&gt;<span style="color: rgba(0, 0, 0, 1)">{

    </span><span style="color: rgba(0, 0, 255, 1)">const</span> <span style="color: rgba(0, 0, 255, 1)">params</span> =<span style="color: rgba(0, 0, 0, 1)"> useParams()
    </span><span style="color: rgba(0, 0, 255, 1)">const</span> id = <span style="color: rgba(0, 0, 255, 1)">params</span><span style="color: rgba(0, 0, 0, 1)">.id
    </span><span style="color: rgba(0, 0, 255, 1)">const</span> name = <span style="color: rgba(0, 0, 255, 1)">params</span><span style="color: rgba(0, 0, 0, 1)">.name

    </span><span style="color: rgba(0, 0, 255, 1)">return</span> &lt;&gt;
      &lt;div&gt;<span style="color: rgba(0, 0, 0, 1)">

            {id} </span>+<span style="color: rgba(0, 0, 0, 1)"> {name}
      </span>&lt;/div&gt;
   
    &lt;/&gt;<span style="color: rgba(0, 0, 0, 1)">
}</span></pre>
</div>
<p><span style="font-size: 18px"><strong>五、嵌套式路由</strong></span></p>
<p>1.实现步骤</p>
<p>(1)使用children属性配置路由嵌套关系</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">const</span> router =<span style="color: rgba(0, 0, 0, 1)"> createBrowserRouter([
    {
      path : </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">/</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
      element : </span>&lt;Layout&gt;&lt;/Layout&gt;<span style="color: rgba(0, 0, 0, 1)">,
      children :[{
            path : </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">/board</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
            element : </span>&lt;Board&gt;&lt;/Board&gt;<span style="color: rgba(0, 0, 0, 1)">
      },
      {
            path : </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">/about</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
            element : </span>&lt;About&gt;&lt;/About&gt;<span style="color: rgba(0, 0, 0, 1)">
      }]
    },
    {
      path : </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">/login</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
      element : </span>&lt;Login&gt;&lt;/Login&gt;<span style="color: rgba(0, 0, 0, 1)">
    },
    {
      path : </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">/article/:id/:name</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
      element : </span>&lt;Article&gt;&lt;/Article&gt;<span style="color: rgba(0, 0, 0, 1)">
    }
])</span></pre>
</div>
<p>(2)使用&lt;Outlet/&gt;组件配置二级路由渲染位置</p>
<div class="cnblogs_code">
<pre>import { Link,Outlet } <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">react-router-dom</span><span style="color: rgba(128, 0, 0, 1)">"</span>

<span style="color: rgba(0, 0, 255, 1)">const</span> Layout= ()=&gt;<span style="color: rgba(0, 0, 0, 1)">{
    </span><span style="color: rgba(0, 0, 255, 1)">return</span> &lt;&gt;
      &lt;div&gt;<span style="color: rgba(0, 0, 0, 1)">
            我是一级组件Layout
      </span>&lt;/div&gt;
      &lt;div&gt;

            &lt;Link to=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">/board</span><span style="color: rgba(128, 0, 0, 1)">'</span>&gt; 面板&lt;/Link&gt;
            &lt;Link to=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">/about</span><span style="color: rgba(128, 0, 0, 1)">'</span>&gt; 关于&lt;/Link&gt;
      &lt;/div&gt;<span style="color: rgba(0, 0, 0, 1)">
      {</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 配置二级路由的出口 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">}
   
      </span>&lt;Outlet&gt;&lt;/Outlet&gt;
    &lt;/&gt;<span style="color: rgba(0, 0, 0, 1)">
}

export </span><span style="color: rgba(0, 0, 255, 1)">default</span> Layout</pre>
</div>
<p>2.默认二级路由</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">{
      path : </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">/</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
      element : </span>&lt;Layout&gt;&lt;/Layout&gt;<span style="color: rgba(0, 0, 0, 1)">,
      children :[{
            index:</span><span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">, //1.加index:true
            element : </span>&lt;Board&gt;&lt;/Board&gt;<span style="color: rgba(0, 0, 0, 1)">
      },
      {
            path : </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">/about</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
            element : </span>&lt;About&gt;&lt;/About&gt;<span style="color: rgba(0, 0, 0, 1)">
      }]
    },</span></pre>
</div>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">const</span> Layout= ()=&gt;<span style="color: rgba(0, 0, 0, 1)">{
    </span><span style="color: rgba(0, 0, 255, 1)">return</span> &lt;&gt;
      &lt;div&gt;<span style="color: rgba(0, 0, 0, 1)">
            我是一级组件Layout
      </span>&lt;/div&gt;
      &lt;div&gt;
            &lt;Link to=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">/</span><span style="color: rgba(128, 0, 0, 1)">'</span>&gt; 面板&lt;/Link&gt; //2.路径修改/
            &lt;Link to=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">/about</span><span style="color: rgba(128, 0, 0, 1)">'</span>&gt; 关于&lt;/Link&gt;
      &lt;/div&gt;<span style="color: rgba(0, 0, 0, 1)">
      {</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 配置二级路由的出口 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">}
   
      </span>&lt;Outlet&gt;&lt;/Outlet&gt;
    &lt;/&gt;<span style="color: rgba(0, 0, 0, 1)">
}</span></pre>
</div>
<p><span style="font-size: 18px"><strong>六、404路由配置</strong></span></p>
<p>说明:当浏览器输入url路径在整个路由配置中都找不到对应的path,为了用户体验,展示404进行渲染</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">const</span> router =<span style="color: rgba(0, 0, 0, 1)"> createBrowserRouter([
    {
      path : </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">/</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
      element : </span>&lt;Layout&gt;&lt;/Layout&gt;<span style="color: rgba(0, 0, 0, 1)">,
      children :[{
            index:</span><span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">,
            element : </span>&lt;Board&gt;&lt;/Board&gt;<span style="color: rgba(0, 0, 0, 1)">
      },
      {
            path : </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">/about</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
            element : </span>&lt;About&gt;&lt;/About&gt;<span style="color: rgba(0, 0, 0, 1)">
      }]
    },
    {
      path : </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">*</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
      element: </span>&lt;NotFound&gt;&lt;/NotFound&gt;<span style="color: rgba(0, 0, 0, 1)">
    } //添加</span>NotFound组件 使用*配置</pre>
<pre><span style="color: rgba(0, 0, 0, 1)">])</span></pre>
</div>
<p><span style="font-size: 18px"><strong>七、路由模式</strong></span></p>
<p>1.hash :由react-dom中 createHashRouter创建(底层:监听hashChange事件)</p>
<p>2.history:使用react-dom中 createBrowerRouter创建(底层:history对象+pushState事件)需要后端支持</p>
<p><img src="https://img2024.cnblogs.com/blog/1483877/202403/1483877-20240312164632733-70142261.png"></p>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/qinlinkun/p/18068683
頁: [1]
查看完整版本: React — 路由