当前位置: 首页 > news >正文

漳州微网站建设公司网站建设项目规划书案例分析

漳州微网站建设公司,网站建设项目规划书案例分析,跨境电商平台企业,2345网址导航是什么浏览器在之前的文章 探讨:围绕 props 阐述 React 通信 中总结了关于“父子”组件传值,但是当需要在组件树中深层传递参数以及需要在组件间复用相同的参数时,传递 props 就会变得很麻烦。 实际案例: 下述展示有两种状态:① 详…

在之前的文章 探讨:围绕 props 阐述 React 通信 中总结了关于“父子”组件传值,但是当需要在组件树中深层传递参数以及需要在组件间复用相同的参数时,传递 props 就会变得很麻烦。

实际案例: 下述展示有两种状态:① 详情态;② 编辑态(tag形式)

组件设计:通过 isDetailed 来决定是“详情”还是“编辑”。

在这里插入图片描述
开发过程:拆分了四层,根组件设置了 isDetailed 来确定最终确定 <ViolationGroup> 中展示。

 {data.map((item) =>isDetailed ? (<div>{item.disposeReasonName}</div>) : (<Tag bordered={false}>{item.disposeReasonName}</Tag>),)}
根组件
DetailViolationGroupList
Item
ViolationGroup

props 传递(逐层传递)

根组件设置 isDetailed,然后逐层传递。

在这里插入图片描述

☝️缺点:需要找到最近的父节点,“状态提升” 到太高的层级会导致“逐层传递props”的情况。

✌️优势:这样做可以让哪些组件用了哪些数据变得十分清晰!

在这里插入图片描述

context 传递(深层传递)

Context 使组件向其下方的整个树提供信息,会穿过中间的任何组件。子组件可以通过某种方式“访问”到组件树中某处在其上层的数据。

无需逐层透传,直接广播形式!需要的组件直接获取。

在这里插入图片描述

  1. 创建 一个 context。(可以将其命名为 IsDetailedContext)
export const IsDetailedContext = createContext(false);
  1. 在需要数据的组件内 使用 刚刚创建的 context。(ViolationGroup 将会使用 IsDetailedContext
 const isDetailed = useContext(IsDetailedContext);
  1. 在指定数据的组件中 提供 这个 context。 (根组件 将会提供 IsDetailedContext
<IsDetailedContext.Provider value={true}><DetailViolationGroupList violationGroupList={data?.detail?.violationGroupList}></DetailViolationGroupList>
</IsDetailedContext.Provider>

☝️缺点:对数据的抽离,导致理解成本略高。

✌️优势:许多组件需要相同的信息,避免通过许多中间组件向下传递 props(冗长)!

在这里插入图片描述

⚓ Context 的工作方式类似于 CSS 属性继承。在 React 中,覆盖来自上层的某些 context 的唯一方法是将子组件包裹到一个提供不同值的 context provider 中

包装成组件形式

定义:组件形式

/* context.js */
import { createContext, useContext } from 'react';export const IsDetailedContext = createContext(false);export const IsDetailedProvider = ({ children, isDetailed }) => {const originalIsDetailed = useContext(IsDetailedContext); // 原始默认值 falsereturn (<IsDetailedContext.Provider value={isDetailed ?? originalIsDetailed}>{children}</IsDetailedContext.Provider>);
};

使用方

<IsDetailedProvider isDetailed={true}><DetailViolationGroupListviolationGroupList={data?.detail?.violationGroupList}></DetailViolationGroupList>
</IsDetailedProvider>
知识点:空值合并运算符

🐾 空值合并运算符??)是一个逻辑运算符,当左侧的操作数为 null 或者 undefined 时,返回其右侧操作数,否则返回左侧操作数。与逻辑或运算符(||)不同,逻辑或运算符会在左侧操作数为假值时返回右侧操作数。也就是说,如果使用 || 来为某些变量设置默认值,可能会遇到意料之外的行为。

'' ?? 1 // ''
'' || 1 // 1
0 ?? 1	// 0
0 || 1  // 1

与 state 结合

Context 不局限于静态值。如果在下一次渲染时传递不同的值,React 将会更新读取它的所有下层组件!可以和 state 结合使用。

children 传递(jsx)

抽象组件并将 JSX 作为 children 传递。

children
根组件
Item
ViolationGroup

上述示例,让 Itemchildren 当做一个参数,渲染 <Item><ViolationGroup isDetailed={true} /></Item>,然后去掉<DetailViolationGroupList> 层。这样就减少了定义数据的组件和使用数据的组件之间的层级。=> 直接在父组件中引用使用!

在这里插入图片描述

http://www.yayakq.cn/news/352504/

相关文章:

  • 成都市 网站建设国外化工网站模板
  • 机械网站建设哪家好wordpress 图片弹出
  • 中国建设银行官方网站纪念币预约成都高标建设有限公司官方网站
  • 外贸的网站有哪些电子商务网站建设与管理期末试题
  • 网站建设需要域名还有什么青浦集团网站建设
  • 公司网页网站建设 pptcrack wordpress
  • 松江区网站建设公司网站模板安装好后
  • 网站排名顾问深圳网站建设找智恒网络
  • 深圳招聘网站前十排名3d建模师可以自学吗
  • 风机网站怎么做WordPress音乐悬浮插件
  • lamp网站开发黄金组合网站续费有什么作用
  • 自适应主题 wordpress网站优化自己做该怎么做
  • 专业做汽车的网站wordpress托管是什么
  • 沈阳市城乡建设局网站首页大型网站建设公司有哪些
  • 谢岗镇网站建设公司零基础做网站教程
  • 即墨哪里有做网站的发帖效果好的网站
  • 可信赖的南昌网站建设上海知名的seo推广咨询
  • 石龙镇住房规划建设局网站wordpress一个页面如何连接到首页
  • 网站的三种基本类型重庆森林讲的什么内容
  • 家政网站开发wordpress禁用ip
  • 网站建设收获如何建网站卖东西
  • 惠州品牌网站建设价格盘锦门户网站制作
  • 做视频的素材什么网站好河南省住建厅官网
  • 广东深广东深圳网站建设服务wordpress获取文章的标签
  • 360免费建站app东山网站建设
  • 如何查看网站推广做的好织梦做的网站织梦修改网页
  • 做电商网站需要注册什么公司名称爱企业查询公司
  • 重庆网站如何做推广中瑞网络网站建设流程
  • 网站建设需怎么做做淘口令网站
  • 上海网站建设怎么赚钱电子商务公司管理制度