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

西宁网站建设 哪家好seo软件推荐

西宁网站建设 哪家好,seo软件推荐,adobe做网站的软件,模板网站建设珠海组件动态创建的原理 在声明式范式中,所有的组件在build环节被创建出来,并挂在到组件书中。当组件非多多时,一次性全部创建出来将非常耗时,而通过动态创建组件可以在build环节之前对组件进行预创建,在页面实际加载时可…

组件动态创建的原理

在声明式范式中,所有的组件在build环节被创建出来,并挂在到组件书中。当组件非多多时,一次性全部创建出来将非常耗时,而通过动态创建组件可以在build环节之前对组件进行预创建,在页面实际加载时可以很快的拿来直接使用,从而加快页面渲染速度。

结合动画:

  • 没有预创建时:必须等待动画结束后进行组件创建。
  • 有预创建时:可以在动画加载中就开始创建组件,等动画结束后可以很快的显示组件。

动态创建组件的优势

减少自定义组件的创建开销

组件更新更快

灵活性高,可以自由控制组件中节点的更新,实现高效的节点树裁剪。

直接操作组件树

通过makeNode和replaceBuilderNode可以自由控制组件的创建和更新。

组件的动态添加、更新和删除

代码参考,可以直接在v5.0.5上运行。

import { BuilderNode, FrameNode, NodeController } from '@kit.ArkUI';// 动态组件的业务参数
class Params {text: string = 'Hello World';constructor(text: string) {this.text = text;}
}// 构建动态组件
@Builder
function buildText(params: Params) {Column() {Text(params.text).fontSize(50).fontWeight(FontWeight.Bold).margin({ bottom: 36 })}
}// 通过继承NodeController来控制动态组件的生命周期
class TextNodeController extends NodeController {private textNode: BuilderNode<[Params]> | null = null;private message: string = '';constructor(message: string) {super();this.message = message;}// 动态创建组件节点makeNode(context: UIContext): FrameNode | null {if (this.textNode == null) {this.textNode = new BuilderNode(context);this.textNode.build(wrapBuilder<[Params]>(buildText), new Params(this.message));}return this.textNode.getFrameNode();}// 动态替换组件节点replaceBuilderNode(newNode: BuilderNode<Object[]>) {this.textNode = newNode;this.rebuild();}}@Entry
@Component
struct Index {@State message: string = "hello";@State isShow: boolean = true;private textNodeController: TextNodeController = new TextNodeController(this.message);build() {Row() {Column() {if (this.isShow) { // 控制动态删除组件NodeContainer(this.textNodeController) // 动态添加组件.width('100%').height(100).backgroundColor('#FFF0F0F0')}Button('replaceNode').onClick(() => {// 通过按钮事件来动态更新组件// 用新的节点替换之前的节点this.textNodeController.replaceBuilderNode(this.buildNewNode());})}.width('100%').height('100%')}.height('100%')}// 生成新的节点buildNewNode(): BuilderNode<[Params]> {let uiContext: UIContext = this.getUIContext();let message = 'newNode';let textNode = new BuilderNode<[Params]>(uiContext);textNode.build(wrapBuilder<[Params]>(buildText), new Params(message))return textNode;}}

NodeController生命周期

NodeController用于控制和反馈对应的NodeContainer上的节点的行为,需要与NodeContainer一起使用。下面,对其常用生命周期函数进行说明。

  • makeNode必须要重写的方法,用于构建节点树、返回节点挂载在对应NodeContainer中。在对应NodeContainer创建绑定当前NodeController的时候调用、或者通过rebuild方法调用刷新。
  • aboutToResize当controller对应的NodeContainer在Mesure的时候进行回调,入参为节点的布局大小。
  • aboutToAppear当controller对应的NodeContainer在onAppear的时候进行回调。
  • aboutToDisappear当controller对应的NodeContainer在onDisappear的时候进行回调。
export abstract class NodeController {abstract makeNode(uiContext: UIContext): FrameNode | null;aboutToResize?(size: Size): void;aboutToAppear?(): void;aboutToDisappear?(): void;abstract rebuild(): void;onTouchEvent?(event: TouchEvent): void;
}
http://www.dtcms.com/wzjs/509436.html

相关文章:

  • 广西建设中心培训网站宁波网站推广大全
  • 全返利网站建设重庆小潘seo
  • 教育网站如何做seo德阳网站seo
  • 手机版网站开发工具必应搜索网站
  • 网上给别人做设计的网站搜索引擎推广的基本方法
  • p2p网站开发的内容seo如何优化图片
  • reactjs 做网站淘宝关键词排名怎么查询
  • 烟草建设网站江北seo
  • 传奇游戏开发搜索引擎优化seo方案
  • 怎么给自己喜欢的人做网站seo云优化方法
  • 网站建设与管理课后总结郑州网站优化外包
  • 贵阳做网站多少钱合肥百度快速排名提升
  • 有什么做树状图的网站舆情网站
  • 做网站如何导入信用卡付款苏州百度推广
  • 有了网站 怎么做排名优化自己的品牌怎么做加盟推广
  • 浙江瑞通建设集团网站英文seo
  • 推广网站的公司牛奶推广软文文章
  • 前端一般模仿什么网站网络营销是做什么的工作
  • 新沂网络营销是什么seo是哪个国家
  • 网站怎么做值班表音乐接单推广app平台
  • 广州安全教育平台打卡引热议百度网盘seo优化
  • 海宁住房和城乡规划建设局网站seo常用优化技巧
  • wordpress插件手动安装seo网站关键词优化
  • html5手机网站开发工具网络广告策划书案例
  • 杭州微信网站建设网站快速建站
  • 网站小程序开发公司关键词排名优化系统
  • 网站设计建设维护龙岗seo优化
  • 响应式所长网址导航网页模板下载seo关键词首页排名代发
  • 自助网站推广系统做网站怎么赚钱
  • 坂田做网站建设好的网络公司万网域名查询注册商