在此代码中,用户登录时true
的状态变为auth
,但根据以下情况,privateRoute
中使用的true
不会变为checkauth() {
this.setState({
authed:true
})
}
render() {
function PrivateRoute ({component: Component, auth, ...rest}) {
return (
<Route
{...rest}
render={(props) => auth === true
? <Component {...props} />
: <Redirect to={{pathname: '/', state: {from: props.location}}} />}
/>
)
}
return (
<div>
<Router history={browserHistory}>
<div>
<Navbar/>
<Switch>
<Route path="/" component={Firstpage} exact > </Route>
<Route path="/signup" component={Signup}> </Route>
<Route path="/shop/:id" component={Shop}></Route>
<Route path="/login" render={(props) => <Login {...props} checkauth=
{this.checkauth.bind(this)} />}> </Route>
<PrivateRoute path='/newpath' component={Welcome} auth=
{this.state.authed}/>
</Switch>
</div>
</Router>
</div>
);
}
代码。
PrivateRoute
如何在{{1}}函数中使用App组件的状态,或者有其他方法可以做到这一点?