微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决我如何将渲染道具传递给 React 功能组件中的孩子?

我正在使用 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,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;
    });
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。