В этом коде состояние authed
становится 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>
);
}
Как я могу использовать состояния компонента App в функции PrivateRoute
или есть другой способ сделать это?