原文:https://www.freecodecamp.org/news/how-to-use-react-router-version-6/
汉化并简化一下
在本教程中,我们将讨论什么是React Router以及如何使用它。然后我们将讨论它的功能,以及如何在React应用中使用它们来导航和渲染多个组件。
请确保拥有:
- 一个React应用
- 对React组件有很好的理解
安装 react router dom v6
npm install react-router-dom@6
或
yarn add react-router-dom@6
如何配置React Router
安装后要做的第一件事是让React Router在应用的任何地方都可使用。
为此,请打开src
文件夹中的index.js
文件,从react-router-dom
中导入BrowserRouter
,并使用它来包裹根组件(App
组件)
建立项目后,index.js 最初看起来像这样:
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root')
);
使用React Router进行修改后,你的index.js现在应该长这样:
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import { BrowserRouter } from "react-router-dom";
ReactDOM.render(
<BrowserRouter>
<App />
</BrowserRouter>,
document.getElementById("root")
);
我们所做只是将React.StrickMode
替换为从react-router-dom
导入的BrowserRouter
。现在,路由功能在应用的任何地方都可以使用。
怎样路由到其他组件
现在我们来看看如何路由和渲染不同的组件。
第一步 - 创建多个组件
我们将创建Home
,About
和Contact
组件,代码分别如下:
Home组件
function Home() {
return (
<div>
<h1>This is the home page</h1>
</div>
);
}
export default Home;
About组件
import React from 'react'
function About() {
return (
<div>
<h1>This is the about page</h1>
</div>
)
}
export default About
Contact组件
import React from 'react'
function Contact() {
return (
<div>
<h1>This is the contact page</h1>
</div>
)
}
export default Contact
第二步 - 定义路由
由于App
组件是React代码最初渲染的根组件,我们将在其中创建所有路由。
App 组件
import { Routes, Route } from "react-router-dom"
import Home from "./Home"
import About from "./About"
import Contact from "./Contact"
function App() {
return (
<div className="App">
<Routes>
<Route path="/" element={ <Home/> } />
<Route path="about" element={ <About/> } />
<Route path="contact" element={ <Contact/> } />
</Routes>
</div>
)
}
export default App
首先我们导入了Routes
和Route
。然后我们导入了所有需要在上面附加路由的子组件。现在让我们分解定义路由的过程。
Routes
作为所有独立路由的容器/父级。
Route
用于创建单个路由。它有两个attributes:
path
,它指定所需组件的URL路径。你可以把这个路径名命名为任何名字。如上,你会注意到第一个路径名是反斜杠(/)。当应用程序第一次加载时,任何路径名是反斜杠的组件都会最先渲染。这意味着Home
组件将是第一个被渲染的组件。element
,指定了路由应当渲染的组件
我们现在所做的就是定义路由及其路径,并将它们附加到各自的组件中。
如果你是从V5来的,那么你会注意到我们没有使用exact
和switch
,这很棒。
第三步 - 使用Link
导航到路由
如果到目前为你的代码没有任何错误,那么您的浏览器应该正在渲染Home
组件。
我们现在将使用另一个React Router的功能,根据我们在App
组件中创建的路由和路径名导航到其他页面。如下:
Home组件
import { Link } from "react-router-dom";
function Home() {
return (
<div>
<h1>This is the home page</h1>
<Link to="about">Click to view our about page</Link>
<Link to="contact">Click to view our contact page</Link>
</div>
);
}
export default Home;
Link
组件类似于HTML中的anchor元素(<a>)。它的to
属性指定了链接指向的路径。
回想一下在App
组件中列出的路径名,当你点击链接时,它将检查你的路由并使用相应的路径名渲染组件。
在使用Link
之前,一定要记得从react-router-dom
中导入Link
。
总结
至此,我们已经看到了如何安装、设置和使用React Router的基本功能来导航到应用中的不同页面。这几乎涵盖了入门的基础知识,但还有更多更酷的功能。
例如,可以使用useNavigate
将用户推送到各种页面,还可以使用useLocation
获取当前URL。好吧,我们不会在文章末尾开始另一个教程。
你可以在React Router文档中查看更多功能。