【发布时间】:2017-07-08 12:07:30
【问题描述】:
我有以下容器组件
import { connect } from "react-redux";
import LoginComponent from "./Login";
import React from "react";
export class LoginContainerComponent extends React.Component {
constructor( props ) {
super( props )
}
login( username, password ) {
//Perform actual login here
this.props.onLoginClick();
}
render() {
return (<LoginComponent onLoginClick = {this.login} />);
};
}
const mapStateToProps = function ( state ) {
return {
currentState: 'Logged Out'
}
};
const mapDispatchToProps = function ( dispatch ) {
return {
onLoginClick: () => {
alert( 'login clicked' );
}
}
};
export default connect( mapStateToProps, mapDispatchToProps )( LoginContainerComponent );
正如您在 render() 方法中看到的那样,我将容器组件的登录方法传递给作为表示组件的 LoginComponent。这个想法是
- 用户单击演示组件上的登录按钮
- Presentation 组件在上面给出的 Container 组件上调用 login 方法。
- 容器组件会做登录(这个方法会连接到实际的数据库并验证他的用户)然后调用通过connect()方法传入的onLoginClick方法(mapDispatchToProps)。但是,当我尝试访问 this.props.onLoginClick 时,在 LoginContainerComponent 的登录方法中,this.props 返回 null。我在这里做错了什么吗?
【问题讨论】:
标签: redux components