有人能告诉我为什么state.set导致未定义。
我有一个这样的减速机:
const initialState = fromJS({
description: 'default_description',
});
function helpReducer(state = initialState, action) {
switch (action.type) {
case DEFAULT_ACTION:
return state;
case CHANGE_DESCRIPTION:
console.log('Change Description reducer action.data: '+action.data); //results in string say foo
console.log('state: '+state); //results in valid state on first call
return state
.set('description':action.data);
default:
return state;
}
}
我第一次调用动作CHANGE_DESCRIPTION,state = default_description
。
致电state.set
后state.description = undefined
。
之前我曾使用过state.set,但我不确定为什么它现在失败了。
该动作由子组件调用,如下所示:
父:
export class FOO extends React.PureComponent {
constructor(props){
super(props);
}
render() {
return (
<div>
<FOOForm onChange={this.props.changeDescription} />
</div>
);
}
}
function mapDispatchToProps(dispatch) {
return {
dispatch,
changeDescription: (e) => dispatch(changeDescription(e.target.value))
};
}
Foo表格为了示范:
function fooForm(props){
return <FormControl onChange={props.onChange} componentClass="textarea" />;
}
答案 0 :(得分:1)
我不确定你实现reducer的上下文,但我相信不可变JS中的语法应该使你的set看起来像这样:
return state.set('description', action.data)
请注意,您需要将属性和值作为参数传递,而不是作为键值对传递。