介绍
这篇文章主要讲解了反应中组合组件的使用方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
这种模式本质上解决的是组件之间传值的问题。但是它对于传值以及一些内部操控的逻辑封装得更严密。
场景:希望减少上下级组件之间道具的传递,简单来说就是不用传做显式地传值,来达到组件之间相互通信的目的
举例来说,某些界面中应该有标签这样的组件,由标签和TabItem组成,点击每个TabItem,该TabItem会高亮,
那么选项卡和TabItem自然要进行沟通。很自然的写法是像下面这样
& lt; TabItem活跃={真}> & lt; Tabs> & lt; TabItem>第一& lt;/TabItem> & lt; TabItem>第二& lt;/TabItem> & lt; TabItem>第三& lt;/TabItem> & lt;/Tabs>
组件之间通过隐秘的方式进行通信,但这里的隐秘实际上是对道具的操作在一个地方进行管理。
实现
明白了要实现的交互,和代码层面要实现的效果,就可以开始动手了。
TabItem组件有两个关键的道具:活跃(表明当前是否应高亮),onTabClick(自己被点击时调用的回调函数),
TabItem由于是每个标签页面的容器,它只负责把道具。孩子渲染出来,所以用函数式组件即可。
出口const TabItem=道具=比;{ const{活跃,> & lt; Tabs> & lt; TabItem>第一& lt;/TabItem> & lt; TabItem>第二& lt;/TabItem> & lt; TabItem>第三& lt;/TabItem> & lt;/Tabs>
使用组件时要避免传递道具的缺点,那么在哪里传递呢?自然是是标签组件。但上面并没有传入道具啊。
标签虽然可以访问到道具里边的孩子,但是到手的孩子已经是现成的如果直接改它的话,会出问题。
不可以直接改的孩子话,我们就把孩子复制一份,然后改这个复制过来的孩子,再渲染出去,就好啦!
下面来看标签的实现:
类标签延伸反应。组件{ 状态={ activeIndex: 0 } 呈现(){ const {activeIndex}=this.state const newChildren=React.Children.map (this.props。孩子,孩子,指数=比;{ 如果(child.type) {//复制并修改的孩子 返回的反应。cloneElement(孩子,{ 活动:activeIndex===指数,>看完上述内容,是不是对反应中组合组件的使用方法有进一步的了解,如果还想学习更多内容,欢迎关注行业资讯频道。反应中组合组件的使用方法