我试图从我的组件内访问我的路由器,它是未定义的.这是我的路由器:
原文链接:https://www.f2er.com/react/300902.htmlReact.render( <Provider store={store}> {() => <Router> <Route path="/" component={LoginContainer} /> </Router> } </Provider>,document.getElementById('app') );
这是容器:
class LoginContainer extends React.Component { constructor() { super(); } static propTypes = { handleLogin: PropTypes.func.isrequired } static contextTypes = { router: React.PropTypes.object } handleLogin() { this.props.dispatch(Actions.login(null,null,this.context.router)); } render() { return ( <Login auth={this.props} handleLogin={this.handleLogin} /> ); } } function mapStateToProps(state) { return { stuff: [] } } export default connect(mapStateToProps)(LoginContainer);
最后组件:
import React,{ PropTypes } from 'react'; class Login extends React.Component { static propType = { handleLogin: PropTypes.func.isrequired } static contextTypes = { router: React.PropTypes.object } render() { return ( <div className="flex-container-center"> <form> <div className="form-group"> <button type="button" onClick={this.props.handleLogin}>Log in</button> </div> </form> </div> ); } } module.exports = Login;
当我点击登录按钮时,它会点击容器中的handleLogin.在我的handleLogin中,我的这个值是未定义的.我试图将它绑定到构造函数中的函数,但它仍然是未定义的.
另外,当我在我的渲染函数中放置一个断点时,我有一个this.context.router,但它是未定义的.如何在我的handleLogin中获得正确的结果以及如何确保我的路由器在上下文中并且未定义?