react 渲染子组件求解?

发布于 2022-09-17 23:18:50 字数 634 浏览 40 评论 0

antd 文档地址 https://ant.design/components...
我用方式一,能实现
这个功能, props接受的是value 和onchange

我用方式二就不能接受到props的onchange, value。只能接受到父级的props。
两个props不一样

function Text (props) {
  return <input {...props} />
}

function Parent (props) {
   // 方式一
   const Child = props.child
   retrun <Form.Item>
     <Child {...props} />
   </Form.Item>
   // 方式二
   return <Form.Item>
     {props.child({...props})}
   </Form.Item>
}

<Parent child={Text} />

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

七七 2022-09-24 23:18:50

ant-design所依赖的基础库是 rc-component,请查看对应rc-field-form源码 585行以及上面的468行

这里已经很清楚了,如果传入的是一个函数,则会进行调用之后,判断当返回值是一个 react.reactElement 才会进行props的包裹,否则不会进行任何props混入(cloneElement之类的处理)

如果按上述的例子来看,第二种方式 child中获取的当然是父组件的props,因为是函数传参,而它的返回值jsx部分则会被加入onchange,value

希望我的表述没有问题

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文