reactjs - React.js 自动重定向路由
问题描述
我的代码中有这段代码index.js
:
const routing = (
<Router>
<div>
<Route path='/'>
<Redirect to="/login" />
</Route>
<Route path="/login" component={Login} />
<Route path="/signin" component={Signin} />
<Route path="/home" component={Home} />
</div>
</Router>
)
所以它应该给我的是,每当我启动它时,它应该降落在它上面http://localhost:3000/login
或类似的地方。它能做什么。
它给了我一个登录屏幕,如果我点击登录按钮,它会带我到http://localhost:3000/home
,这也是我想要的。
但是每当我直接尝试访问http://localhost:3000/home
或http://localhost:3000/signin
时,它总是需要我访问http://localhost:3000/login
。
这里的实际问题是什么?如何解决?
解决方案
您需要在exact
您的路由中添加关键字,以根据 URL 指定具体的路由路径,否则将遵循继承线。例如,如果您访问 URL /
,它将按预期加载登录组件,因为这是第一条路由。但是,如果您访问 URL /home
,它将呈现登录组件,因为它包含路径/
。添加exact
关键字意味着只有 URL/
会到达该路由。任何其他路由,即使它们包含/
(即每条路由)也不会呈现该组件,因为/
它与/anything
.
const routing = (
<Router>
<Switch>
<Route exact path='/'>
<Redirect to="/login" />
</Route>
<Route path="/login" component={Login} />
<Route path="/signin" component={Signin} />
<Route path="/home" component={Home} />
</Switch>
</Router>
)
推荐阅读
- entity-framework - 嵌套查询实体框架
- git - 如何 rebase 到 master 而不是 git pull origin master?
- r - 如何根据序列的开始和结束创建序列列
- heroku - angularjs 7的heroku部署问题
- wine - 全屏葡萄酒应用程序在 awesome-wm 中最小化
- active-model-serializers - 如何在 Rails 5 的一个动作中应用两个序列化程序?
- excel - VBA 中对特定行和列范围的结构化引用
- regex - 在 MATLAB 中带有环视的正则表达式
- android - Ionic 不在 android 模拟器或 devapp 上显示 json 数据
- git - 如何在不影响远程仓库的情况下恢复本地文件夹中的“git pull”更改?