反应中化合物组件的高级图案:用上下文和克隆构建灵活的UI

反应中化合物组件的高级图案:用上下文和克隆构建灵活的ui

在React中构建复杂的UI时,复合组件模式是一种强大的工具。它允许创建相互协作的组件,从而提供灵活且直观的API。本文将探讨如何使用React的上下文API和cloneElement来设计复合组件,并通过构建灵活的选项卡和手风琴组件来演示其应用。

什么是复合组件?

复合组件是一种设计模式,其中父组件与一个或多个子组件协同工作,共同创建一个完整的UI。类似于HTML中的标签组合构成下拉菜单,React中的复合组件也通过组件间的协作,构建可复用和可定制的UI元素。

复合组件的主要优势在于:

灵活性: 允许开发者以符合其使用场景的方式组合组件。封装性: 逻辑集中在父组件中,子组件负责渲染。可读性: 生成的代码简洁易懂。

设计基于上下文和cloneElement的复合组件

要实现复合组件,我们可以利用React中的两个核心工具:

React上下文: 用于在父组件和子组件之间共享状态和逻辑。React.cloneElement: 用于动态地向子组件传递props。

示例1:构建灵活的选项卡组件

选项卡组件是复合组件的典型示例,通常由一个父组件(标签容器)、一组标签标题组件和内容面板组件构成。以下是实现方法:

步骤1:创建上下文

首先,创建一个上下文来共享当前激活的选项卡索引和一个用于切换选项卡的函数:

import React, { createContext, useState } from 'react';const TabsContext = createContext();const Tabs = ({ children, defaultIndex = 0 }) => {  const [activeIndex, setActiveIndex] = useState(defaultIndex);  return (          
{children}
);};

步骤2:创建TabList和Tab组件

接下来,创建TabList组件(标签容器)和Tab组件(单个标签):

const TabList = ({ children }) => 
{children}
;const Tab = ({ index, children }) => { const { activeIndex, setActiveIndex } = React.useContext(TabsContext); return ( );};

步骤3:创建TabPanel组件

最后,创建TabPanel组件(内容面板),只有当其索引与当前激活的选项卡索引匹配时才渲染内容:

const TabPanel = ({ index, children }) => {  const { activeIndex } = React.useContext(TabsContext);  return activeIndex === index ? 
{children}
: null;};

步骤4:组合使用

现在,我们可以像这样使用选项卡组件:

      Tab 1    Tab 2    Tab 3    Content for Tab 1  Content for Tab 2  Content for Tab 3

示例2:构建手风琴组件

让我们进一步构建一个手风琴组件。手风琴通常由一个父组件(手风琴容器)和多个子组件(手风琴项)组成。

步骤1:创建上下文

我们将使用上下文来管理当前打开的手风琴项索引:

const AccordionContext = createContext();const Accordion = ({ children }) => {  const [openIndex, setOpenIndex] = useState(null);  return (          
{children}
);};

步骤2:创建AccordionItem组件

const AccordionItem = ({ index, children }) => {  const { openIndex, setOpenIndex } = React.useContext(AccordionContext);  return React.Children.map(children, (child) =>    React.cloneElement(child, {      isOpen: index === openIndex,      onClick: () => setOpenIndex(index === openIndex ? null : index),    })  );};

步骤3:创建AccordionHeader和AccordionContent组件

这些组件将接收从AccordionItem传递的props来控制其行为:

const AccordionHeader = ({ children, isOpen, onClick }) => (  );const AccordionContent = ({ children, isOpen }) => (  
{isOpen && children}
);

步骤4:使用手风琴组件

      Header 1    Content for Item 1        Header 2    Content for Item 2  

为什么使用复合组件?

复合组件是构建可复用、灵活的UI的理想方法。通过结合使用React上下文和cloneElement,您可以创建功能强大且易于使用的组件,从而编写更简洁、更易维护的代码。无论您是构建选项卡、手风琴还是其他自定义组件,复合组件模式都是一个有效的解决方案。

以上就是反应中化合物组件的高级图案:用上下文和克隆构建灵活的UI的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1501155.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
精神联系的力量:如何增强您的思想,身体和灵魂
上一篇 2025年12月19日 23:19:42
使用JavaScript和Posttresql构建游戏
下一篇 2025年12月19日 23:19:52

相关推荐

  • 半导体巨头EUV光刻机数量曝光:台积电唯一过百 日本2nm公司醒目

    半导体巨头EUV光刻机数量曝光:台积电唯一过百 日本2nm公司醒目半导体巨头EUV光刻机数量曝光:台积电唯一过百 日本2nm公司醒目半导体巨头EUV光刻机数量曝光:台积电唯一过百 日本2nm公司醒目半导体巨头EUV光刻机数量曝光:台积电唯一过百 日本2nm公司醒目

    在半导体制造领域,工艺节点越先进,对光刻设备的要求也越高。尤其是5nm及以下制程的量产,几乎完全依赖EUV(极紫外)光刻机。目前全球范围内仅有ASML能够提供此类高端设备,因此台积电、三星、Intel等头部厂商均需向其采购。 那么,在这些行业巨头中,谁掌握的EUV光刻机数量最多?调研机构BOFA发布…

    2026年9月24日 用户投稿
    200
  • 受益被投资企业公允值增加,四川长虹H1净利润同比预增56.53%到103.59%

    受益被投资企业公允值增加,四川长虹H1净利润同比预增56.53%到103.59%受益被投资企业公允值增加,四川长虹H1净利润同比预增56.53%到103.59%受益被投资企业公允值增加,四川长虹H1净利润同比预增56.53%到103.59%受益被投资企业公允值增加,四川长虹H1净利润同比预增56.53%到103.59%

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 7月11日,四川长虹发布2025年上半年业绩预告。预计2025年半年度实现归属于母公司所有者的净利润为43,900万元至57,100万元,较去年同期增长15,853.41万元至29,053.41…

    2026年9月24日 用户投稿
    000
  • 受益海外业务及前装业务大增,锐明技术H1净利润同比预增53.64%至77.9%

    受益海外业务及前装业务大增,锐明技术H1净利润同比预增53.64%至77.9%受益海外业务及前装业务大增,锐明技术H1净利润同比预增53.64%至77.9%受益海外业务及前装业务大增,锐明技术H1净利润同比预增53.64%至77.9%受益海外业务及前装业务大增,锐明技术H1净利润同比预增53.64%至77.9%

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 7月10日,锐明技术发布2025年上半年业绩预告。公告显示,公司上半年预计归属于上市公司股东的净利润为19,000万元至22,000万元,较去年同期增长53.64%至77.9%;预计扣除非经常性…

    2026年9月24日 用户投稿
    000
  • 荣耀V系列手机微信收款语音怎么设置?快速配置支付播报指南

    答案:设置微信收款语音播报需先在微信“收付款”中开启“收款到账语音提醒”,再确保荣耀V系列手机的媒体音量正常、通知权限开启、关闭勿扰模式、允许微信后台运行,并检查通知通道和网络连接,才能保障语音提醒正常播放。 荣耀V系列手机设置微信收款语音播报,核心在于微信应用内部的“收款到账语音提醒”功能,并确保…

    2026年9月24日
    300
  • 为什么GPU显存带宽比容量更重要?

    显存带宽比容量更重要,因其直接决定数据传输速度,影响GPU计算单元的利用率。在AI训练和高分辨率渲染中,高带宽可避免“数据饥饿”,确保海量数据高效流转,而HBM技术凭借3D堆叠和宽接口提供远超GDDR的带宽,成为高性能计算的关键。 GPU显存带宽比容量更重要,核心在于现代GPU的工作模式和其处理的数…

    2026年9月24日
    200
  • iPhone14微信收款语音播报怎么设置?详细教程助你配置语音功能

    iPhone14微信收款语音播报怎么设置?详细教程助你配置语音功能iPhone14微信收款语音播报怎么设置?详细教程助你配置语音功能iPhone14微信收款语音播报怎么设置?详细教程助你配置语音功能iPhone14微信收款语音播报怎么设置?详细教程助你配置语音功能

    要让iPhone 14微信收款语音播报正常工作,需确保微信内开启“收款到账语音提醒”,同时在系统设置中允许微信通知并开启声音,检查手机未处于静音或勿扰模式,保持微信更新并重启设备以排除缓存问题。 要在iPhone 14上设置微信收款语音播报,最关键的其实是确保微信应用内部的通知设置和手机系统层面的通…

    2026年9月24日 用户投稿
    700
  • 问界M5现身美国加州公路 测试车还是平行进口车?

    近日,小编注意到,有网友在社交平台发布照片称,自己于美国加州i-880公路拍摄到悬挂当地车牌的问界m5车型,引发关于该车身份的猜测:是华为官方测试车辆,还是私人渠道引入的平行进口车? ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 问界M5 …

    2026年9月24日
    000
  • 为什么要4k对齐

    早期硬盘的每个扇区以512字节为标准,而新一代硬盘的扇区容量则为4096个字节,即所谓的4k扇区。虽然硬盘标准已经更新,但操作系统仍然使用512字节扇区的标准。为了确保兼容性,硬盘制造商将4k扇区模拟成了512字节扇区。文件系统的块(簇)通常是512字节的倍数,而新系统大多设定为4k的倍数,例如li…

    2026年9月24日
    100
  • 1-6月乘用车HUD标配装配量TOP20车型:问界M9第四

      近日,有机构公布了2025年1至6月国内乘用车hud功能标配装配量top20车型。其中,理想l6、l7、l8、l9和问界m9、m8等车型装配率(装配率=装配量/零售量)均为100%。此外,6月国内hud标配装配率接近20%。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 …

    2026年9月24日
    800
  • 德系豪华品牌集体投“华” 是什么让BBA放下了身段?

    德系豪华品牌集体投“华” 是什么让BBA放下了身段?德系豪华品牌集体投“华” 是什么让BBA放下了身段?德系豪华品牌集体投“华” 是什么让BBA放下了身段?德系豪华品牌集体投“华” 是什么让BBA放下了身段?

      【小编科技】当德系豪华车徽章与中国科技基因交融,当国资巨头的生产线接入鸿蒙神经中枢,当售价20万元的汽车装上百万级智驾系统——华为正以”技术赋能者”的姿态重构产业格局,成为名副其实的行业顶流。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 Deep…

    2026年9月24日 用户投稿
    500
  • 固态硬盘主控芯片的算法如何影响长期使用性能?

    固态硬盘主控算法直接决定SSD的寿命、性能一致性与数据安全。其核心在于磨损均衡、垃圾回收(GC)和错误校正码(ECC)三大算法:磨损均衡确保闪存块均匀使用,防止局部过早失效;GC通过清理无效数据释放空间,影响写入放大(WAF)和性能稳定性;ECC则纠正数据错误,保障长期可靠性。WAF受GC效率、预留…

    2026年9月24日
    200
  • 20万到100万全覆盖:“界”系五兄弟如何抢占BBA市场?

    20万到100万全覆盖:“界”系五兄弟如何抢占BBA市场?20万到100万全覆盖:“界”系五兄弟如何抢占BBA市场?20万到100万全覆盖:“界”系五兄弟如何抢占BBA市场?20万到100万全覆盖:“界”系五兄弟如何抢占BBA市场?

      【小编科技】当德系豪华车徽章与中国科技基因交融,当国资巨头的生产线接入鸿蒙神经中枢,当售价20万元的汽车装上百万级智驾系统——华为正以”技术赋能者”的姿态重构产业格局,成为名副其实的行业顶流。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 Deep…

    2026年9月24日 用户投稿
    600
  • 2025英雄联盟名人堂典藏系列震撼发布 |

    uzi,被无数玩家誉为“史上最伟大adc”,凭借其在下路位置登峰造极的操作技艺、对电竞事业的无限热忱以及对全球电子竞技发展的深远影响,在《英雄联盟》的历史长河中刻下了不可磨灭的印记。如今,简自豪正式入选英雄联盟名人堂,成为继首位传奇之后第二位获此殊荣的选手,实至名归! 与此同时,官方重磅推出限量实体…

    2026年9月24日
    000
  • 三星手机微信收款语音播报怎么开启?详细教程助你设置成功

    要让三星手机微信收款语音播报正常工作,需先检查微信内“收款到账语音提醒”是否开启,再确保手机系统中微信的通知权限完整开启、电池优化设为“不受限制”,同时确认媒体音量未静音、勿扰模式未启用;此外,定期清理缓存、保持应用与系统更新、避免第三方清理软件误杀后台,可保障通知长期稳定。 三星手机要开启微信收款…

    2026年9月24日
    400
  • 机械硬盘在2024年还有存在的必要吗?

    机械硬盘在2025年仍具不可替代性,尤其适合大容量存储、NAS、监控和冷备份场景。其每TB成本远低于SSD,4TB机械盘约600元,而同容量SSD超1500元,高容量段差距更大。选购时应优先选CMR技术硬盘,避开性能较差的SMR盘,推荐希捷酷鹰、西数红盘Plus等支持7×24小时运行的型号。对于需长…

    2026年9月24日
    300
  • 对于2K分辨率游戏玩家而言,中端显卡是否已能完全满足未来两三年的需求?

    中端显卡在2025年仍可满足2K游戏需求,关键在于选择12GB以上显存并支持DLSS 4或FSR 3.1技术的型号,如RTX 5060 Ti 16GB、RX 7700 XT或RX 6750 GRE 12GB,配合超分技术可在多数主流游戏中实现高帧率流畅体验。 对于2K分辨率的游戏玩家,中端显卡在20…

    2026年9月24日
    800
  • 2025最新Yandex俄罗斯官网 Yandex免注册版官方入口地址

    2025最新Yandex俄罗斯官网免注册入口为https://yandex.ru/,该平台提供深度优化俄语搜索、实时导航、多语言翻译、新闻聚合,并涵盖地图、云存储、语音助手及教育等特色服务,支持极简界面与隐私保护模式。 1、立即进入“☞☞☞☞点击俄罗斯yandex搜索引擎入口☜☜☜☜”; 2、立即进…

    2026年9月24日
    400
  • 如何分析Linux进程内存 pmap内存映射检查方法

    如何分析Linux进程内存 pmap内存映射检查方法如何分析Linux进程内存 pmap内存映射检查方法如何分析Linux进程内存 pmap内存映射检查方法如何分析Linux进程内存 pmap内存映射检查方法

    要分析linux进程的内存,特别是利用pmap工具,核心操作是获取目标进程pid后执行pmap -x 。1. 获取pid可通过ps aux | grep your_process_name;2. 执行pmap -x 命令查看扩展格式信息,包括address、kbytes、rss、dirty、mode…

    2026年9月24日 用户投稿
    300
  • 2025最新抖音1小时有效粉丝涨粉教学(500有效粉丝核心玩法)

    最近很多家人朋友给我们留言,让我们讲一讲抖音500有效粉丝涨粉教学,原因是目前很多抖音用户饱受500有效粉丝困扰,一是涨的粉丝不是有效粉丝,二是自己涨粉太慢了,作为一个科普抖音运营知识的运营博主,其实我也非常好奇,抖音涨粉应该是一件很容易的事情,了解后才发现,是因为大家对于抖音运营知识的匮乏,对于有…

    2026年9月24日
    600
  • 2025年生成漫画图片的AI工具Top10盘点

    2025年生成漫画图片的AI工具Top10盘点2025年生成漫画图片的AI工具Top10盘点2025年生成漫画图片的AI工具Top10盘点2025年生成漫画图片的AI工具Top10盘点

    2025年AI漫画工具已深度融入创作全流程,十大工具各具特色:ComiGenius Pro 3.0强于叙事连贯与情绪表达,MangaFlow AI专精日漫风格,PanelCraft AI优化分镜布局,StorySketcher 2025实现故事可视化,Artisan Studio X支持多风格模拟,…

    2026年9月24日 用户投稿
    600

发表回复

登录后才能评论
关注微信