快速开始
要在Web App中开始使用React Router,您需要一个React Web App。如果您需要创建一个,我们建议您尝试create-react-app。这是一个非常流行的工具,可以实现和React Router的完美配合。
首先,安装create-react-app并使用它创建一个新项目。
npx create-react-app demo-app
cd demo-app
安装
您可以使用公共包管理工具yarn或npm安装React Router。由于我们正在构建Web App,因此将在本教程中使用react-router-dom
npm install react-router-dom
接下来,将以下任一示例复制/粘贴到中src/App.js。
示例1:基本路由
在此示例中,路由器帮助我们处理了3个“页面”:Home、About、User。在点击不同的<Link>
时,路由器将呈现匹配项<Route>
,并以此来渲染React页面。
注意:在<Link>
内部,<Link>
会创建一个带有href
属性的<a>
标签,因此使用键盘进行导航或屏幕阅读器的人仍然可以使用此应用。
import React from "react";
import {
BrowserRouter as Router,
Switch,
Route,
Link
} from "react-router-dom";
export default function App() {
return (
<Router>
<div>
<nav>
<ul>
<li>
<Link to="/">Home</Link>
</li>
<li>
<Link to="/about">About</Link>
</li>
<li>
<Link to="/users">Users</Link>
</li>
</ul>
</nav>
{/* <Switch>通过在其子<Route>中查找
渲染与当前URL匹配的第一个子项页面。
· */}
<Switch>
<Route path="/about">
<About />
</Route>
<Route path="/users">
<Users />
</Route>
<Route path="/">
<Home />
</Route>
</Switch>
</div>
</Router>
);
}
function Home() {
return <h2>Home</h2>;
}
function About() {
return <h2>About</h2>;
}
function Users() {
return <h2>Users</h2>;
}
示例二:嵌套路由
此示例展示了嵌套路由的工作方式。路由/topics
加载Topics
组件,这将实现<Route>
在通过path:id
传入的值上进一步实现有条件的渲染。
import React from "react";
import {
BrowserRouter as Router,
Switch,
Route,
Link,
useRouteMatch,
useParams
} from "react-router-dom";
export default function App() {
return (
<Router>
<div>
<ul>
<li>
<Link to="/">Home</Link>
</li>
<li>
<Link to="/about">About</Link>
</li>
<li>
<Link to="/topics">Topics</Link>
</li>
</ul>
<Switch>
<Route path="/about">
<About />
</Route>
<Route path="/topics">
<Topics />
</Route>
<Route path="/">
<Home />
</Route>
</Switch>
</div>
</Router>
);
}
function Home() {
return <h2>Home</h2>;
}
function About() {
return <h2>About</h2>;
}
function Topics() {
let match = useRouteMatch();
return (
<div>
<h2>Topics</h2>
<ul>
<li>
<Link to={`${match.url}/components`}>Components</Link>
</li>
<li>
<Link to={`${match.url}/props-v-state`}>
Props v. State
</Link>
</li>
</ul>
{/* Topics 页面拥有自己的<Switch>, 其中包含更多子路由,这些路由都将基于/topics这个路径下。
你可以认为第二个<Route>在这里是作为所有topics子页面的index(索引)页面,或者在没有选择topic时需要渲染的页面
*/}
<Switch>
<Route path={`${match.path}/:topicId`}>
<Topic />
</Route>
<Route path={match.path}>
<h3>Please select a topic.</h3>
</Route>
</Switch>
</div>
);
}
function Topic() {
let { topicId } = useParams();
return <h3>Requested topic ID: {topicId}</h3>;
}
下一步
希望这些示例使您对使用React Router创建Web应用程序有一定的启发和帮助。继续阅读来深入了解React Router中的主要组件!
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!