繁体   English   中英

如何将渲染道具传递给 React 功能组件中的子级?

[英]How can i pass render props to children in React functional components?

我正在使用react-final-form我有一个类似这样的Form组件:

export function Form = ({ children, onSubmit, initialValues, ...props }) => {
   return (
      <FinalForm 
         initialValues={initialValues} 
         onSubmit={onSubmit}
         render={({ handleSubmit, submitting, pristine, valid }) => (
            <form onSubmit={handleSubmit} className="space-y-6" {...props}>
             {children}
            </form>
         )}
      />
   )
}
export default Form;

我想像这样使用这个表单组件:

<Form>
  ({ valid, pristine, submitting } => (
    <TextInput name="email" label="Email Address" type="email" />
    <Button text="Login" disabled={!valid || pristine || submitting} />
  )
</Form>

我怎样才能将validpristinesubmitting传递给我的孩子,以便我可以使用它来禁用按钮?

代替

{children}

尝试这个,

{
    React.Children.map(children, child => {
        if (React.isValidElement(child)) {
            return React.cloneElement(child, { submitting, pristine, valid });
        }
        return child;
    });
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM