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

Quick BI 自定义组件开发 -- 第一篇 Lifecycle 接口的定义

文章目录

    • 一、LifeStyle 接口的定义
    • 二、每个生命周期钩子的解释
      • 2.1 bootstrap?:LifecycleBootstrap
      • 2.2 mount?: LifecycleMount
      • 2.3 unmount?: LifecycleUnmount
      • 2.4 update?: LifecycleUpdate
    • 三、为什么使用 LifeCycle 接口

一、LifeStyle 接口的定义

自定义组件本质上是一个对象,接口为

interface Lifecycle {bootstrap?: LifecycleBootstrap;mount?: LifecycleMount;unmount?: LifecycleUnmount;update?: LifecycleUpdate;
}

包含四个可选的属性(bootstrapmountunmountupdate),每个属性对应一个生命周期的钩子函数。

二、每个生命周期钩子的解释

2.1 bootstrap?:LifecycleBootstrap

  • 作用:在组件初始化或加载到 Quick BI 环境时调用,用于执行初始化任务,例如设置配置、获取初始数据或准备资源。
  • 调用时机:组件加载的初始阶段,通常在挂载到 DOM 之前。
  • 使用场景:设置默认属性、验证配置或连接数据源。
type LifecycleBootstrap = (props: WidgetProps) => Promise<void> | void;

props可能包含组件的配置或上下文,函数可以是异步的(返回 Promise),以支持 API 调用等操作。

2.2 mount?: LifecycleMount

  • 作用:当组件被渲染或挂载到 DOM 时调用,用于执行与 UI 渲染或事件绑定相关的任务。
  • 调用时机:组件初始化完成后,被添加到页面时。
  • 使用场景:渲染组件的 HTML 结构、初始化图表(如 ECharts 或 D3)或绑定 DOM 事件。
type LifecycleMount = (props: WidgetProps) => Promise<void> | void;

2.3 unmount?: LifecycleUnmount

  • 作用:当组件从 DOM 中移除或销毁时调用,用于清理任务,防止内存泄漏或资源占用。
  • 调用时机:组件不再需要时,例如离开仪表板或移除组件。
  • 使用场景:移除事件监听器、清除定时器或释放 WebSocket 连接等资源

通常不需要参数,专注于清理。

type LifecycleUnmount = () => Promise<void> | void;

2.4 update?: LifecycleUpdate

  • 作用:当组件的属性或数据发生变化时调用,用于更新组件状态或重新渲染。
  • 调用时机:组件接收到新的属性,例如数据更新或配置变化。
  • 使用场景:用新数据重新渲染图表、更新显示值或调整组件布局。
type LifecycleUpdate = (props: WidgetProps) => Promise<void> | void;

三、为什么使用 LifeCycle 接口

  • 控制组件初始化(bootstrap),确保正确设置。
  • 动态渲染和更新 UI(mount 和 update),展示实时数据。
  • 清理资源(unmount),提高性能并避免内存泄漏。
  • 提高组件的可重用性和可维护性,遵循一致的生命周期模式。
http://www.xdnf.cn/news/960715.html

相关文章:

  • esp_image: invalid segment length 0xffffffff
  • MySQL自定义函数零基础学习教程
  • FastAPI 与 JWT 身份验证:保护你的 API
  • SpringBoot配置最新的AI版本加入Maven的配置方式
  • CDBench论文精读
  • 树莓派4B, ubuntu20.04, 安装Ros Noetic[踩坑记录]
  • 当拼音文字遇上回文:英语中的诗意镜像与文化密码
  • Profinet转CAN网关如何实现profinet与can协议互转
  • 如何通过API接口获取淘宝商品列表?操作详解
  • Quick BI 自定义组件开发 -- 第二篇 添加 echart 组件,开发图表
  • Spring AMQP
  • 打造高效能技术组织的逆向法则
  • 解读新交规中关于“电动自行车能否在快车道骑行”的核心问题
  • Shellshock漏洞与永恒之蓝(WannaCry)勒索病毒深度分析
  • [大A量化专栏] 看盘界面设置(未完待续)
  • Linux进程信号(一)
  • AI Bot到底是真助手,还是又一个流量收割伎俩?
  • 软件功能测试有哪些类型?软件测评机构
  • CppCon 2015 学习:The Importance of Being const
  • 鸠摩搜书官网入口,免费电子书小说在线搜索下载网站
  • 火山 RTC 引擎10 ----远端视频 转网易视频格式
  • 镜头景深的影响因素有哪些
  • 【西门子杯工业嵌入式-7-OLED】
  • 高防CDN是什么?和传统CDN有什么区别?
  • 深入浅出 红黑树:如何手写红黑树(基于TreeMap,算法导论的实现)
  • 振动力学:复模态法和状态空间描述(一般阻尼系统的自由振动)
  • 网站维护页面Plus + HTML源码(源码下载)
  • 门静脉高压——检查
  • 【python深度学习】Day 49 CBAM注意力
  • 【题解-洛谷】P10480 可达性统计