Reactjs 基于上传的JSON文件填充FieldArray

Reactjs 基于上传的JSON文件填充FieldArray,reactjs,redux,redux-form,Reactjs,Redux,Redux Form,我试图根据放入react dropzone的json文件的内容填充FieldArray组件 在文档中使用(因为我的代码结构实际上是相同的)。我的文件将包含一个成员列表。删除/选择文件后,reducer将更新表单的状态。因此,在我的文件中,键“members”与同名的FieldArray组件匹配 该逻辑适用于现场组件,但不适用于现场阵列组件。问题是,如果我有一个包含3个成员的JSON文件,表单将更新为显示3个成员,但每个成员都没有内容 将文件放入dropzone时运行的(已编辑的)代码: onDr

我试图根据放入react dropzone的json文件的内容填充FieldArray组件

在文档中使用(因为我的代码结构实际上是相同的)。我的文件将包含一个成员列表。删除/选择文件后,reducer将更新表单的状态。因此,在我的文件中,键“members”与同名的FieldArray组件匹配

该逻辑适用于现场组件,但不适用于现场阵列组件。问题是,如果我有一个包含3个成员的JSON文件,表单将更新为显示3个成员,但每个成员都没有内容

将文件放入dropzone时运行的(已编辑的)代码:

onDrop(acceptedFiles) {
  this.setState({ files: acceptedFiles });
  acceptedFiles.forEach((file) => {
  const jsonObj = new XMLHttpRequest();
  jsonObj.overrideMimeType('application/json');
  jsonObj.open('GET', file.preview, true);
  jsonObj.onreadystatechange = () => {
    if (jsonObj.readyState === 4 && jsonObj.status===200) {
      const memberJson = JSON.parse(jsonObj.responseText);
      if (!Object.prototype.hasOwnProperty.call(memberJson , 'members')) {
       this.props.onSubmitMembers(memberJson);
    }
  };
  jsonObj.send(null);
});
我的表格结构:

const UploadForm = reduxForm({
  form: 'upload',
  destroyOnUnmount: false,
  forceUnregisterOnUnmount: true,
  enableReinitialize: true,
  validate,
  initialValues: {
    members: [{}],
    somethingElse: [{}]
  },
})(SimpleForm);

export default connect(
  (state) => ({ initialValues: state.getIn(['upload', 'data']) }),
  { load: loadMembers},
)(UploadForm);
我的初始状态:

const initialState = fromJS({
 data: {
   members: [{}],
   somethingElse: [{}]
  },
  sending: false,
});
在我的减速机中:

case LOAD_MEMBERS:
      return state.update('data', (data) => data.concat(action.payload));
成员:

{
    "members": [{
            "firstname": "foo",
            "lastname": "bar"
        },

        {
            "firstname": "other",
            "lastname": "other"
        }
    ]
}
现场阵列:


如果不清楚,我可以修改所有代码并将其放在该网页上。

如果您从Redux提供
初始值
,则不应将其指定为
reduxForm()
的配置参数,尽管这应该正确覆盖。哇,
readyState===4
,这就是核心的oldskool!为了帮助您,我需要查看:1)您的数据结构(一个成员的示例json片段)和2)您的
FieldArray
组件。很酷,我想您不需要这样做。谢谢你的通知!我会更新的。我将用snippet和FieldArray组件更新本文。注:呵呵,代码大部分来自于一位同事,他从其他地方复制了代码。我猜当截止日期很短而你又缺乏经验时就会发生这种情况:>是的,如果代码能够在WebpackBin上运行就太好了。没有什么明显的东西会在我读的时候跳出来。现在有人在做。当这篇文章被修复后,我会更新它。哦,仅供参考,因为我正在使用“redux form/immutable”。我不能完全使用webpackbin。如果它没有得到修复,我会用github或任何最简单的方式发送一些东西。非常感谢您的回复,埃里克。