Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React with Redux表单中的动态表单_Javascript_Reactjs - Fatal编程技术网

Javascript React with Redux表单中的动态表单

Javascript React with Redux表单中的动态表单,javascript,reactjs,Javascript,Reactjs,我正在开发一个足球博彩系统。我想动态生成一个表单,并使用redux表单保持对象的状态 我的基本实体是一个匹配:谁有一个主客场团队,谁有一个主客场结果 matches = [ { name: 1, type: "group", home_team: 1, away_team: 2, home_result: null, away_result: null, date: "2018-06-14T18:00:00+03:00", stadium: 1, chann

我正在开发一个足球博彩系统。我想动态生成一个表单,并使用redux表单保持对象的状态

我的基本实体是一个匹配:谁有一个主客场团队,谁有一个主客场结果

 matches = [
{
  name: 1,
  type: "group",
  home_team: 1,
  away_team: 2,
  home_result: null,
  away_result: null,
  date: "2018-06-14T18:00:00+03:00",
  stadium: 1,
  channels: [],
  finished: false
},
{
  name: 2,
  type: "group",
  home_team: 3,
  away_team: 4,
  home_result: null,
  away_result: null,
  date: "2018-06-15T17:00:00+05:00",
  stadium: 12,
  channels: [],
  finished: false
},

我想填写一份Redux表格,但却被困在最好的方式中。我还希望,每次用户更改输入上的值时,这都会反映在状态Json中

要动态创建表单,您需要以不同的方式构建数据。 您需要具有匹配id的类似于此的fields对象:

const fieldsObject = ['match1', 'match2', 'match3']
和一个initialValues对象,它将如下所示:

const resultsObject = {
  match1_home: 1, 
  match1_away: 3
}
等等。然后,表单将根据初始值和字段名称初始化其字段。守则:

const MyForm = (props) => {
 const { handleSubmit, fields } = props;
return (
    <form onSubmit={handleSubmit}>
      {fields.map(match => (
        <div key={match}>
          <Field
            name={`${match}_home`}
            component="input"
            />
           <Field
            name={`${match}_away`}
            component="input"
            />
        </div>
      ))}
      <button type="submit">Submit</button>
    </form>
  )
}
用法如下所示:

<MyForm initialValues={resultsObject} fields={fieldsObject} onSubmit={this.submitForm}/>

看看我是否正确,每个匹配都是一个新的redux表单,并输入结果?这就是问题所在。在同一页上有很多表单是一种很好的模式?我认为每场比赛都是一个大表格的一部分,每场比赛都有自己的id。明白了吗?每页显示多少场比赛?如果要通过匹配项动态创建表单,可以将匹配项作为初始值传递,并通过数组映射以在表单中创建字段。明白了,还是我应该发布一个代码作为答案?我想动态创建它。这就是我被卡住的地方。如果你能用redux格式显示一些代码,我会解释一下。它看起来很不错,但是我希望在状态下对象是json:{match:id:1{home_score:1,away_score;2}例如,我说的很清楚?谢谢你的回答,你可以在json中的每个键上使用map函数从json构建对象……我错过了什么吗?