いくつかのイベントが成功したときにブール値を保存した状態をアプリケーションに追加しようとしました。私はここで間違っていることを理解できません。reduxとreact.jsを使用すると、私の小道具が「未定義」になるのはなぜですか?
リデューサー:
import * as actionTypes from '../constants/action-types.js';
const initialState = [{
eventPassed: false
}];
export default function eventPassed(state = initialState, action) {
switch (action.type) {
case actionTypes.EVENT_PASSED:
return true;
default:
return state;
}
}
処置:コンポーネントの周囲
import * as actionTypes from '../constants/action-types';
export function eventPassed(eventPassed) {
return {
type: actionTypes.EVENT_PASSED,
payload: { eventPassed: eventPassed }
};
}
コンテナ:
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
import Example from '../components/example.jsx';
import { eventPassed } from '../actions/app-actions';
class ExampleContainer extends Component {
render() {
return (
<Example {...this.props} />
);
}
}
const mapDispatchToProps = (dispatch) => ({
actions: bindActionCreators({
eventPassed
}, dispatch)
});
const mapStateToProps = (state) => ({
eventPassed: state.eventPassed
});
export default connect(mapStateToProps, mapDispatchToProps)(ExampleContainer);
コンポーネント:
import React, { Component, PropTypes } from 'react';
class Example extends Component {
constructor() {
super();
this.action = this.action.bind(this);
}
componentDidMount() {
this.props.actions.eventPassed(true);
}
action() {
console.log(this.props.eventPassed);
}
render() {
return (
<div>
<button onClick={this.action}>Action</button>
</div>
);
}
}
export default Example;
私はを記録しようと、それは私に "未定義" を与える<Example />
コンポーネントでを "this.props.eventPassed"。何か不足していますか?これは、控除した店舗の最も簡単な使用方法です。
this.props.actions.eventPassed
へのあなたの減速は、あなたの場合には、状態オブジェクトを返す必要があります{eventPassed:真} – MichaelB何this.props.eventPassedはありません 'に '成分を含む。下の私の答えを参照してください –
Pineda
私の答えをより読みやすく編集しました – Pineda