1

因此,类似于https://github.com/erikras/react-redux-universal-hot-example/router.js样板文件中的代码 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();
    }
}

因此,当 I 时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')
  }

也不起作用。

如何做到这一点?

4

0 回答 0