React教程(六) : React-Router 基础应用
官网参考地址:
https://reactrouter.com/web/example/basic
基础用法:
import {
BrowserRouter as Router,
Switch,
Route,
Link
} from "react-router-dom";
<Router>
<div>
<ul>
<li>
<Link to="/">Home</Link>
</li>
<li>
<Link to="/about">About</Link>
</li>
<li>
<Link to="/dashboard">Dashboard</Link>
</li>
</ul>
<hr />
<Switch>
<Route exact path="/">
<Home />
</Route>
<Route path="/about">
<About />
</Route>
<Route path="/dashboard">
<Dashboard />
</Route>
</Switch>
</div>
</Router>
高级用法 - 参数传递
<Router>
<div>
<h2>Accounts</h2>
<ul>
<li>
<Link to="/google">Google</Link>
</li>
<li>
<Link to="/baidu">Baidu</Link>
</li>
<li>
<Link to="/bing">Bing</Link>
</li>
</ul>
<Switch>
<Route path="/:category" children={<Component01 />} />
</Switch>
</div>
</Router>
Component01.js
export const Component01 = (props)=>{
let { category } = useParams();
return(
<div style={{width:'100vw', textAlign:'center'}}>
{ `useParams-${category}` }
</div>
)
}
高级用法 - 路由嵌套
嵌套路由指子组件中套用父组件的路由。 比如父组件的路由是/user, 其下的子组件的路由是 /user/XXX。 也就是说子组件要继承父组件的路由。
参见:https://reactrouter.com/web/example/nesting
高级用法 - 自定义渲染方法
Route组件的render属性可以自定义渲染前的执行代码逻辑,通常可以在此进行身份验证。
<Router>
<div>
<h2>自定义路由的渲染方法</h2>
<ul>
<li>
<Link to="/public">Public</Link>
</li>
<li>
<Link to="/private">Private</Link>
</li>
</ul>
<Switch>
<Route path="/public" exact render={()=>{
return <Component02></Component02>
}} />
<Route path="/private" exact render={()=>{
return <div>You are not allowed to visit this page</div>
}} />
</Switch>
</div>
</Router>
高级用法 - 自定义Link
某些情况下需要对Link做自定义,比如下面这个例子,当选中一个link,会在其左侧出现"> "。
https://reactrouter.com/web/example/custom-link
高级用法 - 阻止路由跳转
以下示例阻止离开当前页面
https://reactrouter.com/web/example/preventing-transitions
高级用法 - 处理no match
Switch中最后加上path="*"处理no match的情况
<Route path="*">
<NoMatch />
</Route>
代码示例:https://reactrouter.com/web/example/no-match
最后是如何用代码控制路由跳转
import { useHistory } from "react-router-dom";
function HomeButton() {
const history = useHistory();
function handleClick() {
history.push("/home");
}
return (
<button type="button" onClick={handleClick}>
Go home
</button>
);
}
参考:https://stackoverflow.com/questions/31079081/programmatically-navigate-using-react-router
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具