私はReactクラスをES5からES6にリファクタリングしましたが、this.state.dispatch(logIn(this.state.logIn))
を呼び出すボタンをクリックすると、行頭の最初のthis
がnullになります。超奇妙な。ここでこれは、Reactクラスの関数ではnullです
は私のクラスです:ボタンでログをクリック
class Home extends Component {
constructor(props) {
super(props);
this.state = {
panelIsOpen: false,
registration: {},
login: {},
};
}
signUp() {
this.props.dispatch(signUp(this.state.registration));
this.setState({
registration: {},
});
}
logIn() {
debugger; // this is `null here`
this.props.dispatch(logIn(this.state.login));
this.setState({
login: {},
});
}
togglePanel(e) {
this.setState({ panelIsOpen: !this.state.panelIsOpen});
}
render() {
const {elements} = this.props;
const {registration, login} = this.state;
return (
// some stuff
);
}
};
Home.propTypes = {
elements: React.PropTypes.array,
dispatch: React.PropTypes.func,
user: React.PropTypes.object,
};
const mapStateToProps = ({elements, auth}) => {
return {
elements: getElementsByKeyName(elements, 'visibleElements'),
user: getLoggedInUser(auth),
};
};
Home = DragDropContext(HTML5Backend)(Home);
export default connect(mapStateToProps)(Home);
は、ログイン機能を呼び出しますが、ここにいくつかの理由で、this
は、ルックを取るためnull
おかげで
は、私は私がそれを取っていたと思います:コンストラクタでそれらをバインドする必要はありません -
あなたのための現在のスコープにバインドします矢印の機能として、あなたのメソッドを定義します。私が 'createClass'を使っているときに与えられたものです。ありがとう! –