添加/删除表单后,初始表单值将被丢弃

时间:2019-04-09 07:53:59

标签: reactjs redux redux-form

我有一个NotificationList组件,可从存储在列表中的提取数据中渲染NotificationCard

//NotificatitonList.js
return this.props.notifications.list.map(n => {
  return (
    <div>
      <NotificationCard
        key={n.id}
        form={`updateNotification_${n.id}`}
        initialValues={n}
        notfId={n.id}
      />
    </div>
  );
});

NotificationCard包含一个具有唯一名称的redux-form

form={'updateNotification_${n.id}'}和初始值initialValues={n}

NotificationCard.js的相关部分:

const formWrapperd = reduxForm({
  validate
})(NotificationCard);

export default connect(
  null,
  { someActions }
)(formWrapperd);

有效。但是,如果我尝试向存储在redux中的notifications.list的顶部添加新的名称,则会添加它,但是表单中的所有初始值也会被丢弃。如果我将新通知添加到列表的末尾,则可以正常工作。删除通知也是如此,仅当删除列表中的最后一个通知时,它才能正常工作。我不知道为什么会这样,我似乎不在任何地方使用列表索引。

减速器的相关部分:

const INITIAL_STATE = {list: [], ...};    

export default (state = INITIAL_STATE, action) => {
  switch (action.type) {
    ...
    case CREATE_NOTIFICATION:
      return { ...state, list: [...state.list, action.payload] };
    case DELETE_NOTIFICATION:
        return {
          ...state,
          list: state.list.filter(el => el.id !== action.id)
        };

谢谢。有什么想法吗?

为了让您更好地了解我所拥有的: enter image description here

1 个答案:

答案 0 :(得分:1)

设法通过使用initialize作为道具传递的redux-form动作创建者使其工作。只需将它的初始值放在componentDidMount中即可

  componentDidMount() {
    this.props.initialize(this.props.initialValues);
  }