2017-06-27 24 views
0

在发布此问题之前,我无处不在,但我找不到任何东西!反应路由器v3 onEnter等待承诺

所以我希望我的反应应用程序中的某些路线等待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功能被完全忽略,我也试着传递一个第三个参数callback(),这是行不通的!

回答

0

你必须使用的OnEnter函数的第三个参数:

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

对不起的人,我已经说过,我试过了,但它不工作。警报弹出,但替换仍然被忽略 –