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();
    }
}

したがって、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