Redux存储在onEnter内的replace()的下一个路由中丢失

时间:2016-10-06 20:07:29

标签: react-router react-router-redux isomorphic

因此,类似于router.js中的代码,位于https://github.com/erikras/react-redux-universal-hot-example/ master branch

的样板文件中
const requireLogin = (nextState, replace, cb) => {

    if(!isLoggedIn) {
        store.dispatch(getUserInfo(somePayLoad)).then(checkLoginStatus);
    }
    function checkLoginStatus() {
        const {authorization: { user }} = store.getState();
        if(!user.typeA) {
            replace('/home');
        }
        cb();
    }
}

所以,当我replace()时,如果if条件!user.typeA失败,那么它会转到通常的被叫路由,访问上面代码中提取的用户详细信息,而且,我可以当用户想要退出时,我可以轻松调用logout调度程序。但是,如果条件通过,它将替换为/home页面并成功打开(重定向)到主页。但我无法在authorization商店中获得用户详细信息。我也不能打电话给logout调度员。

注意:

  if(!user.typeA) {
      const path = '/home';
      const query = {error:'anything'};
      const state = store.getState();
      replace({ path, query, state });
  }

而不是

  if(!user.typeA) {
      replace('/home')
  }

也行不通。

如何实现这一目标?

0 个答案:

没有答案