我已经在Stack Overflow上问过这个问题,但是情况是历史记录已更新,但从未渲染新组件。就我而言,有时有效,有时却无效。
我正在使用通过props传递到组件的历史对象。
我有一些登录用户的逻辑,在解决了诺言之后,我使用下面的代码在成功登录后将其发送到主页。
this.props.history.push("/home");
奇怪的是,有时它们已正确重定向,但其他时候浏览器URL已更新,而home组件未呈现。
以下是呈现我的路线的文件:
<Switch>
<PrivateRoute exact path='/home' authed={this.state.authUser} component={Home}/>
<PrivateRoute exact path='/new' authed={this.state.authUser} component={NewPhone}/>
<Route exact path='/login' component={Login}/>
<Route exact path='/' component={Root}/>
<Route exact path='/signup' component={Signup}/>
</Switch>
这也是我使用的PrivateRoute组件:
const PrivateRoute = ({ component: Component, authed,...rest }) => (
<Route {...rest} render={props => (
authed !== null ? (
<Component {...props} authed={authed} />
) : (
<Redirect to={{
pathname: "/login",
state: { from: props.location }
}}/>
)
)} />
);
如果需要更多信息,我们将很乐意提供。非常感谢