开发者问题收集

如何将 props 传递给 React 中作为 props 传递的组件?

2020-11-23
7675

我想将 props 传递给一个以如下方式传递的组件:

<Field
      name="persons"
      component={Persons} 
/>

我试过了但是没有用:

component={<Person prop={prop} />}

我怎样才能让它工作?

2个回答

您可以在两个不同的属性中传递组件类型和 props

<Foo component={Bar} componentProps={...} />

然后在 Foo 组件中,您执行以下操作

 render() {
    const Component = this.props.component;
    const props = this.props.componentProps;
    return <div> ... <Component {...props}/> ...</div>
 }

或者 您可以传递一个呈现组件的函数,如下所示

<Foo component={() => <Bar props />}/>

然后在 Foo 组件中,您执行以下操作

 render() {
    return <div> ... {this.props.component()} ...</div>
 }

或者 您可以按照问题中的建议进行操作,如下所示

<Foo component={<Bar props/>}/>

然后在 Foo 组件中,您执行以下操作

 render() {
    return <div> ... {this.props.component} ...</div>
 }

这完全取决于您将如何在 Foo 组件中使用传递的组件,或者在您的情况下使用 Field 组件

Ali Faris
2020-11-23

组件只不过是一个返回 React 组件的函数。当您执行 <Person prop={prop} /> 时,您实际上是在以 jsx 样式调用该函数。

因此,您需要将您的 Person 组件包装到另一个返回 Person 的函数中,例如:

// props here is in case <Field> pass some props to component
component={(props) => <Person {...props} prop={prop} />}
buzatto
2020-11-23