React Router 是 React 应用中用于实现客户端路由的库。它允许你在不同的组件之间进行导航,而无需重新加载整个页面。嵌套路由是指在一个路由组件内部再定义子路由,这样可以实现更复杂的页面结构。
当你尝试从一个嵌套路由导航到一个外部路由时,可能会遇到问题。这是因为嵌套路由的路径是相对于其父路由的路径来定义的,而外部路由的路径是全局的。
嵌套路由的路径是相对于其父路由的路径来定义的,而外部路由的路径是全局的。当你在嵌套路由中尝试导航到一个外部路由时,React Router 可能无法正确解析路径,导致导航失败。
你可以使用 useHistory
钩子或 withRouter
高阶组件来实现从嵌套路由导航到外部路由。
import React from 'react';
import { BrowserRouter as Router, Route, Link, useHistory } from 'react-router-dom';
const Home = () => <div>Home</div>;
const About = () => <div>About</div>;
const Dashboard = () => (
<div>
<h1>Dashboard</h1>
<NestedRoute />
</div>
);
const NestedRoute = () => {
const history = useHistory();
const handleNavigateToAbout = () => {
history.push('/about');
};
return (
<div>
<h2>Nested Route</h2>
<button onClick={handleNavigateToAbout}>Go to About</button>
</div>
);
};
const App = () => (
<Router>
<nav>
<ul>
<li>
<Link to="/">Home</Link>
</li>
<li>
<Link to="/about">About</Link>
</li>
<li>
<Link to="/dashboard">Dashboard</Link>
</li>
</ul>
</nav>
<Route path="/" exact component={Home} />
<Route path="/about" component={About} />
<Route path="/dashboard" component={Dashboard} />
</Router>
);
export default App;
通过这种方式,你可以轻松地从嵌套路由导航到外部路由,而无需担心路径解析问题。
领取专属 10元无门槛券
手把手带您无忧上云