reactjs - 反应路由器重定向到根空白页面
问题描述
我可以Login
在/
.
我可以看到Home
组件/home
(登录时)。
但是当我/home
在没有登录的情况下访问时,我会被重定向到/
,但它显示的是一个空白页面。
为什么它不向我显示Login
组件?
这是ProtectedRoute
我使用的组件:
const ProtectedRoute = ({component: Component, isAuth, ...rest}) => {
if (Cookies.get('token')) {
isAuth = true
}
return <Route {...rest} render={props => (isAuth ? <Component {...props} /> : <Redirect exact to="/" />)} />
}
这是我的路线App.js
:
render() {
return (
<div className={styles.App}>
<Switch>
<Route exact path="/" component={Login} />
<ProtectedRoute path="/home" component={Home} isAuth={this.props.auth} />
<Route render={() => <h1>Not found</h1>} />
</Switch>
</div>
)
}
如下所示:BrowserRouter
_Router
index.js
ReactDOM.render(
<Provider store={store}>
<Router>
<App />
</Router>
</Provider>,
document.getElementById('root'),
)
解决方案
意识到Switch
即使在使用react developer tools
.
在我移动BrowserRouter
(as Router
) 以仅包装Switch
箱子后终于让它工作了。
render() {
return (
<div className={styles.App}>
<Router>
<Switch>
<Route exact path="/" component={Login} />
<ProtectedRoute path="/home" component={Home} />
<Route render={() => <h1>Not found</h1>} />
</Switch>
</Router>
</div>
)
}
推荐阅读
- algorithm - 选择数组元素的方法有多少?
- ios - 计算 iPhone 行进的短垂直距离
- bash - Bash - 检查给定参数是否存在
- javascript - 非单词是否有任何javascript单词边界替代方案?
- java - 由于 IllegalAccessException,Clojure 无法在 java 11 上调用接口默认方法
- c++ - 使用基于范围的循环迭代向量时出现问题
- python - 不明白为什么 UDS 长度对我来说似乎是错误的
- javascript - IIFE 或匿名函数和全局对象
- sql - 有没有办法使用地理服务器中的 WMS 存储,但在每次请求 SQL 查询数据库之前出于权限原因
- django - 如何比较来自查询集中的方法和值的值?[django]