Родительский компонент
const myParentComponent = ({ sourceValue, classes, doStuff }) => {
return (
<div>
<MyComponent className={classes.iconWithText} value={sourceValue} onDoStuff={doStuff} />
</div>
);
}
const mapStateToProps = () => {
...
}
function mapDispatchToProps(dispatch) {
return {
doStuff: () => dispatch(doStuffAction())
};
}
export default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(myParentComponent));
использует
Дочерний компонент
export default class MyComponent extends Component {
handleClick = () => {
console.info(this.props.value);
this.props.onDoStuff(this.props.value);
}
render() {
return (
<SomeIcon className={this.props.className} onClick={this.handleClick} />
);
}
}
В конечном счете, вызываемое действие само по себе не делает ничего, кроме log:
export function doStuff(value) {
console.info('At doStuff action', value);
return { type: DO_STUFF, value };
}
Технически все работает, ошибок нет. Но это последнее console.info в действии записывает значение как undefined
. Я уверен, что это потому, что я отображаю действие onClick следующим образом:
function mapDispatchToProps(dispatch) {
return {
doStuff: () => dispatch(doStuffAction())
};
}
Если я укажу следующий параметр:
function mapDispatchToProps(dispatch) {
return {
doStuff: () => dispatch(doStuffAction('123456'))
};
}
Затем действие doStuff записывает это значение 123456.
Кажется, что sourceValue, передаваемое в onDoStuff
из основного компонента, не имеет никакого эффекта.
Что мне нужно сделать, чтобы убедиться, что исходное значение SourceValue передано?