首页 > 解决方案 > 如何将道具从组件发送到 Redux FieldArray

问题描述

我正在使用带有 FieldArray 的 redux-form,我需要访问 FieldArray 组件中的道具。我尝试按以下方式传递道具,但出现“无法读取未定义的属性'字段'”的错误

<FieldArray name="docList" component={docs} props={this.props}/>

const docs= ({props, meta: {error, submitFailed}}) => {
    const {fields} = props;
    return (
    {fields.map((doc, index) => (
     <div>
            <Field component={CustomCom} name={`${doc}.size`} label="size"
                handleChange={(label, type) => this.customMethod(label, SIZE)}
                placeholder="" value={props.sizeValue}/>
     </div>
))}

请让我知道如何在 FieldArray 组件中传递和使用道具。谢谢你。

标签: reactjsreduxredux-form

解决方案


像这样更新你的函数参数

const docs= ({meta: {error, submitFailed}, ...props}), 或者,

const docs= ({fields, meta: {error, submitFailed}})

FieldArray props 将添加到docs组件的 props 对象中,redux-form将自行维护fieldsmeta对象项目,您传入的其余 propsFieldArray将附加到props发送到docs组件中。

举个例子

const renderMembers = props => {
  console.log(props);
  const {
    fields,
    meta: { touched, error, submitFailed }
  } = props;
  return (
    <ul>
      {fields.map((member, index) => (
        <li key={index}>foo</li>
      ))}
    </ul>
  );
};
<FieldArray
  name="members"
  component={renderMembers}
  explicitProp={"Hello"}
/>

在此处输入图像描述


推荐阅读