📅  最后修改于: 2023-12-03 15:10:13.769000             🧑  作者: Mango
故事书反应路由器是一个基于React和React Router的JavaScript库,它可以快速构建单页应用程序。
故事书反应路由器提供以下功能:
首先,您需要在项目中安装故事书反应路由器:
npm install react-router-dom
然后,在您的应用程序中,您需要导入路由器和相关组件:
import { BrowserRouter as Router, Route, Link } from 'react-router-dom';
为了使用路由器,您需要将应用程序包装在 <Router>
组件中:
function App() {
return (
<Router>
<div>
...
</div>
</Router>
);
}
之后,您可以在应用程序中使用 <Route>
组件来指定路径和组件:
function App() {
return (
<Router>
<div>
<nav>
<ul>
<li>
<Link to="/">Home</Link>
</li>
<li>
<Link to="/about">About</Link>
</li>
<li>
<Link to="/contact">Contact</Link>
</li>
</ul>
</nav>
<Route path="/" exact component={Home} />
<Route path="/about" component={About} />
<Route path="/contact" component={Contact} />
</div>
</Router>
);
}
这里,<Route>
组件的 path
属性指定了路径,component
属性指定了应该渲染的组件。
您可以使用嵌套 <Router>
组件来创建嵌套路由:
function App() {
return (
<Router>
<div>
<nav>
<ul>
<li>
<Link to="/">Home</Link>
</li>
<li>
<Link to="/about">About</Link>
</li>
</ul>
</nav>
<Route path="/" exact component={Home} />
<Route path="/about" component={About} />
</div>
</Router>
);
}
function About() {
return (
<div>
<h2>About</h2>
<Router>
<nav>
<ul>
<li>
<Link to="/about/history">History</Link>
</li>
<li>
<Link to="/about/team">Team</Link>
</li>
</ul>
</nav>
<Route path="/about/history" component={History} />
<Route path="/about/team" component={Team} />
</Router>
</div>
);
}
您可以使用路由参数来捕获 URL 中的值:
function App() {
return (
<Router>
<div>
<nav>
<ul>
<li>
<Link to="/users/123">User 123</Link>
</li>
<li>
<Link to="/users/456">User 456</Link>
</li>
</ul>
</nav>
<Route path="/users/:id" component={User} />
</div>
</Router>
);
}
function User({ match }) {
return (
<div>
<h2>User {match.params.id}</h2>
</div>
);
}
在这个例子中,路由参数保存在 match.params.id
中。
您可以使用 <Redirect>
组件将用户重定向到新的路径:
import { Redirect } from 'react-router-dom';
function App() {
return (
<Router>
<div>
<nav>
<ul>
<li>
<Link to="/about">About</Link>
</li>
</ul>
</nav>
<Redirect from="/" to="/about" />
<Route path="/about" component={About} />
</div>
</Router>
);
}
在这个例子中,用户将在访问应用程序的根路径时被重定向到 /about
。
您可以使用 withRouter()
函数获得路由历史记录和定位对象:
import { withRouter } from 'react-router-dom';
function Example(props) {
const { history, location } = props;
function handleClick() {
history.push('/new/path');
}
return (
<div>
<p>当前路径: {location.pathname}</p>
<button onClick={handleClick}>跳转到新路径</button>
</div>
);
}
export default withRouter(Example);
您可以使用 <Switch>
组件将路由挂起到动态位置:
function App() {
return (
<Router>
<div>
<Switch>
<Route path="/" exact component={Home} />
<Route path="/about" component={About} />
<Route component={NotFound} />
</Switch>
</div>
</Router>
);
}
function NotFound() {
return (
<div>
<h2>404 - Not Found</h2>
</div>
);
}
在这个例子中,<Switch>
组件使路由挂起到 NotFound
组件中,如果没有路径与 URL 匹配,则将渲染此组件。
故事书反应路由器是一个功能强大的JavaScript库,它可以帮助您轻松构建单页应用程序。它支持基本路由、嵌套路由、路由参数、路由重定向、路由嵌套历史记录和动态路由。如果您正在构建具有复杂路由需求的应用程序,故事书反应路由器是一个值得考虑的库。