So habe ich einen Router wie folgt aus:Holen Sie sich einen falschen Zustand in reagieren-Router
const Routes = (props) => {
const { store } = props;
const { loggedIn } = props;
const checkAuth = (nextState, replace) => {
auth.checkAuth(nextState, replace, loggedIn);
};
return (
<Provider store={store}>
<Router history={browserHistory}>
<Route component={App}>
<Route path="/" component={HomePage} />
<Route path="login" component={LoginPage} />
<Route onEnter={checkAuth}>
<Route path="about" component={AboutPage} />
<Route path="help" component={HelpPage} />
<Route path="help/new" component={HelpForm} />
</Route>
</Route>
</Router>
</Provider>
);
};
Routes.propTypes = {
loggedIn: PropTypes.bool.isRequired,
store: PropTypes.object.isRequired,
};
function mapStateToProps(state) {
return {
loggedIn: state.user.loggedIn,
};
}
export default connect(mapStateToProps)(Routes);
Beachten Sie, dass ich Requisiten: const { loggedIn } = props;
nun eine Aktion jedes Mal wenn ich schicken, ich sehe in redux debugger dass der Zustand sich geändert hat. Aber nachdem ich auf einen Link geklickt habe, der in checkAuth nicht erlaubt ist, bekomme ich einen Fehler und es leitet mich zurück zur Login-Seite.
Ich habe console.log
hier:
const checkAuth = (nextState, replace) => {
console.log("from checkAuth: " + loggedIn);
auth.checkAuth(nextState, replace, loggedIn);
};
aber das Ergebnis ist falsch.
Meine Frage ist, warum die loggedIn
in den Routen nicht aktualisiert wird?
Danke!