React 克隆组件 -- React.cloneElement(可以用来修改子组件属性值,复制子组件,添加子组件)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React 克隆组件 -- React.cloneElement(可以用来修改子组件属性值,复制子组件,添加子组件)相关的知识,希望对你有一定的参考价值。

项目要求实现按钮级权限,简单来说就是需要通过后台数据绑定来控制前端页面哪些操作按钮需要渲染,哪些操作按钮不需要渲染,

大体的方案是:

在原有的按钮标签外再套一层按钮权限控制标签,然后每个具体的按钮对照后台给定的唯一值传入到这个"按钮权限控制"组件,然后在组件中判断该按钮该不该渲染,之中用到的一个技术点就是React.cloneElement,可以修改子元素的属性值,下面一起了解一下React.cloneElement

 

React.cloneElement

参数:TYPE(ReactElement),[PROPS(object)] ,[CHILDREN(ReactElement)]

克隆并返回一个新的 ReactElement (内部子元素也会跟着克隆),新返回的元素会保留有旧元素的 props、ref、key,也会集成新的 props(只要在第二个参数中有定义),第三个参数为添加的新的子元素。

 
技术图片

要注意的是,createElement 的第一个参数必须是字符串或 ReactClass,而在 cloneElement 里第一个参数应该是 ReactElement:

 
技术图片

原文地址:https://zhirongyuan.github.io/blog/2017/03/10/Blog-entry-two.html

以上是关于React 克隆组件 -- React.cloneElement(可以用来修改子组件属性值,复制子组件,添加子组件)的主要内容,如果未能解决你的问题,请参考以下文章

在子组件中克隆从父组件传递的对象 - React Hooks

GraphQL _ Apollo-client - 直接在组件中传递 guery 变量

React Native 克隆的子组件不会随着道具的变化而重新渲染

react中的——props.child获取组件中间的元素, React中的顶层Api方法克隆.cloneElement——遍历 React.Children.map

在 JSX 中使用 React.cloneElement()

如何更新 React 组件的数组?