反应路由器v3 onEnter等待承诺

时间:2017-06-27 11:12:27

标签: javascript reactjs react-router

在发布这个问题之前,我到处寻找,但我找不到任何东西!!!

所以我希望我的react应用程序中的某些路由等待Promise被解析,以便我可以检查用户角色,如果该用户可以访问特定路由。

我尝试了下面的代码,但它不起作用!

 checkRoles = (nextState, replace) => {

    if(token && !loggedUser) {
            this.getUserData()
            .then(() => {
              alert('you are logged in.');
              replace('/dashboard');
            })
            .catch(() => {
              alert('session expired.');
              replace('/login');
            });
          } else {
            alert('Please login first.');
            replace('frontend/login');
          }
      }

catchthen函数中完全忽略了替换,我也尝试传递第三个arg callback(),它也不起作用!

1 个答案:

答案 0 :(得分:0)

您必须使用onEnter函数的第3个参数:

checkRoles = (nextState, replace, cb) => {
  if (token && !loggedUser) {
    this.getUserData()
      .then(() => {
        alert('you are logged in.');
        replace('/dashboard');
        cb();
      })
      .catch(() => {
        alert('session expired.');
        replace('/login');
        cb();
      });
  } else {
    alert('Please login first.');
    replace('frontend/login');
    cb();
  }
};