【问题标题】:React router 3.x.x fires all onEnter's within <Router> at the same timeReact 路由器 3.x.x 同时触发 <Router> 中的所有 onEnter
【发布时间】:2017-05-18 20:08:08
【问题描述】:

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

console.log 现在返回

'做身份验证'

两次。如果我添加一个新路由并连接 onEnter 函数,它会触发 3 次。移除一个,触发一次。

我完全不知道从哪里开始解决这个问题,所以任何建议都将不胜感激!

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

【问题讨论】:

    标签: javascript reactjs react-router


    【解决方案1】:

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

    例如这样:onEnter={() =&gt; this.doAuth({socket: this.socket, role: ['admin']})}

    【讨论】:

    • 谢谢你。多年来,我一直在尝试在我的身份验证脚本中对其进行调试。再次感谢!
    猜你喜欢
    • 2016-11-06
    • 2018-01-02
    • 2016-09-09
    • 1970-01-01
    • 2018-12-27
    • 2022-11-07
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    相关资源
    最近更新 更多