React router 3.x.x 同时触发所有 onEnter(内存)<Router>



我在应用程序中设置了路由.js它调用一些身份验证函数来检查 JWT 令牌的验证。所有代码都有效,但是,我让我的用户进行身份验证。一旦我点击页面,所有 onEnter 函数似乎都会触发。而不仅仅是我实际访问的路线。使用 react-router v3.x.x

控制台.log现在返回

"做身份验证">

两次。如果我添加新路由并连接 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>
        );
    }
}

路由器会触发所有onEnter,因为它需要传递回调,而不是回调结果值。

例如,以这种方式:onEnter={() => this.doAuth({socket: this.socket, role: ['admin']})}

最新更新