我在App.js中设置了路由,调用了一些Auth函数来检查JWT令牌的验证。所有的代码都可以工作,但是我的用户经过了身份验证,但是当我点击页面时,所有的onEnter函数似乎都会被触发。而不仅仅是我实际访问的路线。使用react-router v3.x.x
console.log现在返回
'做auth'
两次。如果我添加一个新路由并连接onEnter函数,它会触发三次。取出一个,开火一次。
我完全不知道从哪里开始解决这个问题,所以任何建议都会非常感激!
class App extends Component {
doAuth(authData) {
console.log('doing auth');
}
render() {
return (
<Router history={browserHistory}>
<Route
path="/"
component={ AuthContainer }
/>
<Route
path="/dashboard"
component={ DashboardContainer }
onEnter={this.doAuth({socket: this.socket, role: ['admin']})}
/>
<Route
path="/digital-sign"
component={ DigitalSignContainer }
onEnter={this.doAuth({socket: this.socket, role: ['admin', 'editor']})}
/>
</Router>
);
}
}
答案 0 :(得分:1)
路由器触发所有onEnter
,因为它需要传递回调,而不是回调结果值。
例如,以这种方式:onEnter={() => this.doAuth({socket: this.socket, role: ['admin']})}