React Router 4 引入了一些更改,这些更改阻止使用传统方法直接实现经过身份验证的路由。为了解决这个问题,让我们探索替代解决方案。
遇到错误:
在您的初始实现中,您尝试使用
建议的方法:
为了克服这个错误,我们可以利用
PrivateRoute 组件:
function PrivateRoute ({component: Component, authed, ...rest}) { return ( <Route {...rest} render={(props) => authed === true ? <Component {...props} /> : <Redirect to={{pathname: '/login', state: {from: props.location}}} />} /> ) }
更新的路由:
<Route path='/' exact component={Home} /> <Route path='/login' component={Login} /> <Route path='/register' component={Register} /> <PrivateRoute authed={this.state.authed} path='/dashboard' component={Dashboard} />
在 render() 方法中调度操作:
您对在 render 中调度操作的关注( ) 方法有效。通常不鼓励这样做,因为它可能导致潜在的副作用和性能问题。相反,您应该在生命周期方法(如 componentDidMount)中分派操作,或使用 React 的状态管理工具(如 Redux 或 Context API)。
以上是如何在 React Router 4 中实现经过身份验证的路由?的详细内容。更多信息请关注PHP中文网其他相关文章!