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

如何设置网站布局百度资讯指数

如何设置网站布局,百度资讯指数,360 建筑网怎么提示违规操作,免费的微网站哪个好组件动态创建的原理 在声明式范式中,所有的组件在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.ds6.com.cn/news/71241.html

相关文章:

  • 网站构造下拉列表怎么做宁波seo公司排名
  • 招聘网站建设方案模板下载一键seo提交收录
  • 岳阳做网站公司seo外链推广员
  • 换了家公司做网站如何接入备案seo排名第一的企业
  • 不良网站浏览窗口互联网推广平台有哪些
  • 常用网站布局百度seo营销推广
  • 网站改版的seo注意事项东莞优化疫情防控措施
  • 网站地图做关键词排名成都达洱狐网络科技有限公司
  • 政协网站建设推广公司有哪些公司
  • 建设网站工作室舆情网站直接打开的软件
  • 深圳网站设计哪家公司好网站制作河南
  • 网站托管服务适用于哪种类型的网站东莞seo外包公司
  • 萍乡做网站设计培训学院
  • 源代码如何做网站上海网站推广服务公司
  • 编程python长春seo优化企业网络跃升
  • 无锡微信网站定制百度推广如何办理
  • java做购物网站互动营销策略
  • 网站建设商标保护企业品牌推广
  • 网站怎么做才能赚钱吗网络运营主要做什么工作
  • 网站建设哪几家好一些百度广告怎么收费
  • wordpress 聊天插件网站关键词怎么优化排名
  • 济南商城网站建设多少钱烟台网站建设
  • wordpress调用 别的网站营销咨询顾问
  • 马蜂窝网络营销网站建设百度搜索引擎网址格式
  • 穆棱seo沈阳seo
  • 学做网站论坛好吗网络推广的手段
  • 网站服务器如何做端口映射seo优化需要多少钱
  • 上海电子商城网站制作sem网站推广怎么做
  • 哈尔滨网站建设制作广西网络优化seo
  • 金华网站制作抖音搜索seo