返回

React-Router 6 路由变化

前端




React-Router 6 路由变化

React-Router 作为 React 生态系统中最受欢迎的库之一,其更新版本 React-Router 6 带来了新的变化,尤其是路由用法的改变。本文将对这些变化进行详细分析,帮助读者快速了解并掌握 React-Router 6 的路由用法。

路由语法变化

在 React-Router 6 中,路由语法发生了很大变化。不再需要使用 <Route> 组件,而是使用 <Routes> 组件。<Routes> 组件是路由的容器,它可以包含多个 <Route> 子组件。<Route> 子组件指定路由的路径和要渲染的组件。

例如,在 React-Router 5 中,以下代码定义了一个路由,当用户访问 /home 路径时,就会渲染 Home 组件:

<Route path="/home" component={Home} />

而在 React-Router 6 中,需要使用以下代码来定义同一个路由:

<Routes>
  <Route path="/home" element={<Home />} />
</Routes>

路由组件的改变

在 React-Router 6 中,路由组件也发生了变化。不再需要使用 withRouter 高阶组件来获取路由信息,而是可以使用 useLocationuseNavigateuseParams 这三个 Hook 来获取路由信息。

useLocation Hook 可以获取当前的路由信息,useNavigate Hook 可以用来导航到另一个路由,useParams Hook 可以获取路由参数。

例如,在 React-Router 5 中,以下代码获取路由参数并渲染 Home 组件:

const Home = () => {
  const params = useParams();
  return <h1>{params.id}</h1>;
};

而在 React-Router 6 中,需要使用以下代码来获取路由参数并渲染 Home 组件:

const Home = () => {
  const location = useLocation();
  const params = useParams();
  return <h1>{params.id}</h1>;
};

嵌套路由的改变

在 React-Router 5 中,嵌套路由是通过在父路由中使用 <Route> 组件来实现的。而在 React-Router 6 中,嵌套路由是通过在父路由中使用 <Outlet> 组件来实现的。

<Outlet> 组件是嵌套路由的占位符,它会渲染子路由中定义的组件。

例如,在 React-Router 5 中,以下代码定义了一个嵌套路由,当用户访问 /home/about 路径时,就会渲染 About 组件:

<Route path="/home" component={Home}>
  <Route path="about" component={About} />
</Route>

而在 React-Router 6 中,需要使用以下代码来定义同一个嵌套路由:

<Routes>
  <Route path="/home" element={<Home />}>
    <Route path="about" element={<About />} />
  </Route>
</Routes>

结语

React-Router 6 的更新带来了新的变化,尤其是路由用法的改变。本文对这些变化进行了详细分析,帮助读者快速了解并掌握 React-Router 6 的路由用法。