I am trying to access my router from my component and undefined. Here is my router :
React.render( <Provider store={store}> {() => <Router> <Route path="/" component={LoginContainer} /> </Router> } </Provider>, document.getElementById('app') );
Here is the container:
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);
And finally, the component:
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;
When I click the login button, it gets into handleLogin in the container. In my handleLogin , this undefined . I tried to associate this with a function in constructor , but it is still undefined .
Also, when I set a breakpoint in my render function, I have this.context.router , but it is undefined . How can I get the correct this in my handleLogin and how can I make sure that I have a router on context and that is not undefined ?
reactjs redux
jhamm
source share