javascript - 为什么 react-router 将先前的路由与新的路由结合起来?
问题描述
这是我的 Router.js 文件
// imports here
export default () => (
<Router>
<App>
<Route exact path="/" component={Home} />
<Route exact path="/users" component={Users} />
<Route path="/users/:id" component={User} />
<Route path="/about" component={About} />
</App>
</Router>
);
和我的 App.js 文件
const App = props => (
<div>
<nav>
<Link to="/">Home</Link>
<Link to={{ pathname: '/users', state: { prevPath: props.location.pathname } }}>Users</Link>
<Link to="about">About</Link>
</nav>
{props.children}
</div>
);
export default compose(withRouter)(App);
当我选择 '/users' 路径,然后单击任何用户导航到 '/users/:id' 时,它工作正常并且路由是http://localhost:3000/users/some-user-id。但是当我想在这条路线之后导航到路线'/about'
url 地址变成http://localhost:3000/users/about,而不是http://localhost:3000/about?我究竟做错了什么 ?
解决方案
在关于页面的链接中添加精确
export default () => (
<Router>
<App>
<Route exact path="/" component={Home} />
<Route exact path="/users" component={Users} />
<Route path="/users/:id" component={User} />
<Route exact path="/about" component={About} />
</App>
</Router>
);
并在 App.js 中添加反斜杠并解构道具
const App = ({children, location}) => (
<div>
<nav>
<Link to="/">Home</Link>
<Link to={{ pathname: '/users', state: { prevPath: location.pathname } }}>Users</Link>
<Link to="/about">About</Link>
</nav>
{children}
</div>
);
export default compose(withRouter)(App);
推荐阅读
- php - 如何在wordpress中将数据库中的数据显示到下拉列表中
- r - 如何避免ggplot错误:“美学必须是长度1或与数据相同(84):x,y”?
- excel - 复制符合条件的特定单元格并粘贴到另一个工作表
- c++ - 强制解析 MSVC 中的多个函数定义
- javascript - 在多部分请求Node js中动态创建文件夹并上传文件
- alexa - Alexa Skill - 动态调用名称
- arduino - 中断例程不能处理向数组添加变量吗?
- angular - 您的全局 Angular CLI 版本 (6.1.2) 高于本地版本 (1.5.0)。使用本地 Angular CLI 版本?
- java - java jdbc中的更新查询给出运行时错误
- javascript - padStart() 在 IE11 中不起作用