有时你只有 5 分钟的空闲时间,与其把这时间浪费在社交媒体上,不如快速了解一下React-Router!在本教程中,我们将通过为 Scrimba 针织店网站构建导航来学习 React中路由的基础知识。这个示例不是真实的,但也许有一天... ;)
如果你想了解这个主题,可以参加我的高级 React 课程,或者如果你仍然是初学者,请查看我的 React 入门课程。
React-Router 是什么
许多现代网站实际上是由一个页面组成的。它们看起来就像是多个页面,因为它们包含呈现为单独页面的组件。这些通常被称为 SPA——单页应用程序。
从根本上说,React Router 的作用是根据 URL 中使用的路由有条件地显示某些组件(/
表示主页,/about
表示关于页面等)。
例如,我们可以使用 React Router 将 www.knit-with-scrimba.com/ 连接到 www.knit-with-scrimba.com/about or www.knit-with-scrimba.com/shop。
听起来不错——我怎么使用它呢?
要使用 React Router,首先必须使用 NPM 安装它:
npm install react-router-dom
另外,你也可以使用 Scrimba 的这个代码示例,那里已经编写了完整的代码。
你需要从 react-router-dom
包中导入 BrowserRouter,Route 和 Switch:
import React, { Component } from 'react';
import { BrowserRouter, Route, Switch } from 'react-router-dom';
在我的示例中,我将登录页面与其他两个“Shop
(商店)”和“About
(关于)”页面(实际上只是组件)链接起来。
首先,你需要设置你的应用程序,以与 React Router 一起使用。渲染的所有内容都需要放入 <BrowserRouter>
元素内。因此请先将你的 App 放在里面。该组件执行显示你提供的各种组件的所有逻辑。
// index.js
ReactDOM.render(
<BrowserRouter>
<App />
</BrowserRouter>,
document.getElementById('root')
)
接下来,在你的 App 组件中,添加 Switch
元素(打开和关闭标签)。这些确保每次仅渲染一个组件。如果我们不使用它,我们可以默认使用 Error
组件,稍后再编写。
function App() {
return (
<main>
<Switch>
</Switch>
</main>
)
}
现在该添加你的 <Route>
标签。这些是组件之间的链接,应放置在 <Switch>
标签内。
要告诉 <Route>
标签要加载哪个组件,只需添加 path
属性和要用 component
属性加载的组件名称即可。
<Route path='/' component={Home} />
许多主页 URL 是站点名称,后面跟着 /
,例如 www.knit-with-scrimba.com/。在这种情况下,我们把 exact
添加到 Route 标签。这是因为其他 URL 也包含“ /”。因此,如果我们不告诉应用程序它只需要查找 /
,则会加载第一个以匹配该路由的 URL,我们会遇到一个非常棘手的 bug。
function App() {
return (
<main>
<Switch>
<Route path="/" component={Home} exact />
<Route path="/about" component={About} />
<Route path="/shop" component={Shop} />
</Switch>
</main>
)
}
现在将组件导入应用程序。你可能希望将它们放在单独的“组件”文件夹中,以保持代码的清洁和可读性。
import Home from './components/Home';
import About from './components/About';
import Shop from './components/Shop';
关于我之前提到的错误消息,如果用户键入了错误的 URL,则会加载该错误消息。这就像普通的 <Route>
标签,但没有路径。错误组件包含 <h1>Oops! Page not found!</h1>
。不要忘记将它导入到应用程序中。
function App() {
return (
<main>
<Switch>
<Route path="/" component={Home} exact />
<Route path="/about" component={About} />
<Route path="/shop" component={Shop} />
<Route component={Error} />
</Switch>
</main>
)
}
到目前为止,我们的网站只能通过输入 URL 进行导航。为了给网站添加可点击的链接,我们使用 React Router 中的 Link
元素,并设置一个新的 Navbar
组件。同样的,不要忘记将新组件导入到应用程序中。
现在,为应用程序中的每个组件添加一个 Link
,并使用 to="URL"
进行链接。
function Navbar() {
return (
<div>
<Link to="/">Home </Link>
<Link to="/about">About Us </Link>
<Link to="/shop">Shop Now </Link>
</div>
);
};
你的网站现在具有可单击的链接,可以在单页应用程序中导航了!
总结
我们已经完成了。如果你想轻松地在 React 应用程序中导航,请忘记锚标记,并添加React Router。它很干净,有条理,并且使添加和删除页面变得更加容易。
原文:Learn React Router in 5 Minutes - A Beginner's Tutorial,作者:Bob Ziroll