Redux state.set导致未定义

时间:2017-03-13 22:22:05

标签: reactjs redux

有人能告诉我为什么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.setstate.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" />;

}

1 个答案:

答案 0 :(得分:1)

我不确定你实现reducer的上下文,但我相信不可变JS中的语法应该使你的set看起来像这样:

return state.set('description', action.data)

请注意,您需要将属性和值作为参数传递,而不是作为键值对传递。