2017-02-27 48 views
0

我有FieldArray和每个项目产生:我改变的领域之一在数组中更改字段时,其余字段消失,如何渲染它?

export const Options = (props) => { return <div>{ 
    props.fields.map((op, index) => 
     <Fields 
      key={index} 
      names={[ 
      `${props.fields.name}[${index}].${op.fieldName}`, 
      `${props.fields.name}[${index}].optionSubList`, 
      `${props.fields.name}[${index}].otherValue` 
      ]} 
      component={SelectList} 
      otherValue={op.otherValue} 
      fieldName={op.fieldName} 
      important={op.required} 
      className={op.classNames} 
      label={op.label} 
      list={op.options} 
     /> 
    ) }</div>; }; 

后,别人消失。

我尝试添加初值:这是不行的,所有的,如果我有一个剩余场缺少

我还放了标志enableReinitialize相同相同

+0

'Fields'组件从哪里来? – spirift

+0

FieldArray => Fields => Field x3 需要管理Field状态(不管是否取决于数值) 您可以使用FieldGroup,但在这种情况下,我将无法访问其他字段的值 –

+0

If你可以发布Field组件。找到完整的问题至关重要。你必须发布一个问题的所有相关代码。我在想,问题是所有的字段都有相同的名称,但是没有看到'Fields'组件内部如何使用prop'names'这是不可能知道的。 – spirift

回答

1

我有点担心由你的[${index}]包含,因为props.fields.name应该已经有一个[42]类型索引的结尾。我不知道所有相邻组件的细节,但我建议删除索引。

<Fields 
    key={index} 
    names={[ 
    `${props.fields.name}.${op.fieldName}`, 
    `${props.fields.name}.optionSubList`, 
    `${props.fields.name}.otherValue` 
    ]} 
    .../>