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

视频网站开发 视频采集微信营销软件免费版

视频网站开发 视频采集,微信营销软件免费版,邢台企业做网站费用,怎么提高网站响应速度先明确自定义组件和页面的关系: 自定义组件:Component装饰的UI单元,可以组合多个系统组件实现UI的复用。 页面:即应用的UI页面。可以由一个或者多个自定义组件组成,Entry装饰的自定义组件为页面的入口组件&#xff0c…

先明确自定义组件和页面的关系:

  • 自定义组件:@Component装饰的UI单元,可以组合多个系统组件实现UI的复用。

  • 页面:即应用的UI页面。可以由一个或者多个自定义组件组成,@Entry装饰的自定义组件为页面的入口组件,即页面的根节点,一个页面有且仅能有一个@Entry。只有被@Entry装饰的组件才可以调用页面的生命周期。

页面生命周期,即被@Entry装饰的组件生命周期,提供以下生命周期接口:

  • onPageShow:页面每次显示时触发。
  • onPageHide:页面每次隐藏时触发一次。
  • onBackPress:当用户点击返回按钮时触发。

组件生命周期,即一般用@Component装饰的自定义组件的生命周期,提供以下生命周期接口:

  • aboutToAppear:组件即将出现时回调该接口,具体时机为在创建自定义组件的新实例后,在执行其build()函数之前执行。

  • aboutToDisappear:在自定义组件即将析构销毁时执行。

生命周期流程如下图所示,下图展示的是被@Entry装饰的组件(首页)生命周期。
在这里插入图片描述
根据上面的流程图,我们从自定义组件的初始创建、重新渲染和删除来详细解释。

1. 自定义组件的创建和渲染流程

  1. 自定义组件的创建:自定义组件的实例由ArkUI框架创建。

  2. 初始化自定义组件的成员变量:通过本地默认值或者构造方法传递参数来初始化自定义组件的成员变量,初始化顺序为成员变量的定义顺序。

  3. 如果开发者定义了aboutToAppear,则执行aboutToAppear方法。

  4. 在首次渲染的时候,执行build方法渲染系统组件,如果子组件为自定义组件,则创建自定义组件的实例。在执行build()函数的过程中,框架会观察每个状态变量的读取状态,将保存两个map:

    a. 状态变量 -> UI组件(包括ForEach和if)。

    b. UI组件 -> 此组件的更新函数,即一个lambda方法,作为build()函数的子集,创建对应的UI组件并执行其属性方法,示意如下。

build() {...this.observeComponentCreation(() => {Button.create();})this.observeComponentCreation(() => {Text.create();})...
}

当应用在后台启动时,此时应用进程并没有销毁,所以仅需要执行onPageShow。

2. 自定义组件重新渲染

当事件句柄被触发(比如设置了点击事件,即触发点击事件)改变了状态变量时,或者LocalStorage / AppStorage中的属性更改,并导致绑定的状态变量更改其值时:

  1. 框架观察到了变化,将启动重新渲染。

  2. 根据框架持有的两个map(自定义组件的创建和渲染流程中第4步),框架可以知道该状态变量管理了哪些UI组件,以及这些UI组件对应的更新函数。执行这些UI组件的更新函数,实现最小化更新。

3. 自定义组件的删除

如果if组件的分支改变,或者ForEach循环渲染中数组的个数改变,组件将被删除:

  1. 在删除组件之前,将调用其aboutToDisappear生命周期函数,标记着该节点将要被销毁。ArkUI的节点删除机制是:后端节点直接从组件树上摘下,后端节点被销毁,对前端节点解引用,当前端节点已经没有引用时,将被JS虚拟机垃圾回收。

  2. 自定义组件和它的变量将被删除,如果其有同步的变量,比如@Link、@Prop、@StorageLink,将从同步源上取消注册。

不建议在生命周期aboutToDisappear内使用async await,如果在生命周期的aboutToDisappear使用异步操作(Promise或者回调方法),自定义组件将被保留在Promise的闭包中,直到回调方法被执行完,这个行为阻止了自定义组件的垃圾回收。

以下示例展示了生命周期的调用时机:

// Index.ets
import router from '@ohos.router';@Entry
@Component
struct MyComponent {@State showChild: boolean = true;// 只有被@Entry装饰的组件才可以调用页面的生命周期onPageShow() {console.info('Index onPageShow');}// 只有被@Entry装饰的组件才可以调用页面的生命周期onPageHide() {console.info('Index onPageHide');}// 只有被@Entry装饰的组件才可以调用页面的生命周期onBackPress() {console.info('Index onBackPress');}// 组件生命周期aboutToAppear() {console.info('MyComponent aboutToAppear');}// 组件生命周期aboutToDisappear() {console.info('MyComponent aboutToDisappear');}build() {Column() {// this.showChild为true,创建Child子组件,执行Child aboutToAppearif (this.showChild) {Child()}// this.showChild为false,删除Child子组件,执行Child aboutToDisappearButton('create or delete Child').onClick(() => {this.showChild = false;})// push到Page2页面,执行onPageHideButton('push to next page').onClick(() => {router.pushUrl({ url: 'pages/Page2' });})}}
}@Component
struct Child {@State title: string = 'Hello World';// 组件生命周期aboutToDisappear() {console.info('[lifeCycle] Child aboutToDisappear')}// 组件生命周期aboutToAppear() {console.info('[lifeCycle] Child aboutToAppear')}build() {Text(this.title).fontSize(50).onClick(() => {this.title = 'Hello ArkUI';})}
}

以上示例中,Index页面包含两个自定义组件,一个是被@Entry装饰的MyComponent,也是页面的入口组件,即页面的根节点;一个是Child,是MyComponent的子组件。只有@Entry装饰的节点才可以生效页面的生命周期方法,所以MyComponent中声明了当前Index页面的页面生命周期函数。MyComponent和其子组件Child也同时也声明了组件的生命周期函数。

  • 应用冷启动的初始化流程为:MyComponent aboutToAppear --> MyComponent build --> Child aboutToAppear --> Child build --> Child build执行完毕 --> MyComponent build执行完毕 --> Index onPageShow。

  • 点击“delete Child”,if绑定的this.showChild变成false,删除Child组件,会执行Child aboutToDisappear方法。

  • 点击“push to next page”,调用router.pushUrl接口,跳转到另外一个页面,当前Index页面隐藏,执行页面生命周期Index onPageHide。此处调用的是router.pushUrl接口,Index页面被隐藏,并没有销毁,所以只调用onPageHide。跳转到新页面后,执行初始化新页面的生命周期的流程。

  • 如果调用的是router.replaceUrl,则当前Index页面被销毁,执行的生命周期流程将变为:Index onPageHide --> MyComponent aboutToDisappear --> Child aboutToDisappear。上文已经提到,组件的销毁是从组件树上直接摘下子树,所以先调用父组件的aboutToDisappear,再调用子组件的aboutToDisappear,然后执行初始化新页面的生命周期流程。

  • 点击返回按钮,触发页面生命周期Index onBackPress,且触发返回一个页面后会导致当前Index页面被销毁。

  • 最小化应用或者应用进入后台,触发Index onPageHide。当前Index页面没有被销毁,所以并不会执行组件的aboutToDisappear。应用回到前台,执行Index onPageShow。

  • 退出应用,执行Index onPageHide --> MyComponent aboutToDisappear --> Child aboutToDisappear。


文章转载自:
http://wanjiageothermal.xnLj.cn
http://wanjiaaquiclude.xnLj.cn
http://wanjiadlemocrat.xnLj.cn
http://wanjiafootwarmer.xnLj.cn
http://wanjiagalenist.xnLj.cn
http://wanjiaforeignize.xnLj.cn
http://wanjiadiabetogenic.xnLj.cn
http://wanjiasilas.xnLj.cn
http://wanjiacockboat.xnLj.cn
http://wanjiahousecleaning.xnLj.cn
http://wanjiaaccordingly.xnLj.cn
http://wanjiaantitechnology.xnLj.cn
http://wanjiagaudily.xnLj.cn
http://wanjiastratum.xnLj.cn
http://wanjiacherry.xnLj.cn
http://wanjiaattestor.xnLj.cn
http://wanjiaclog.xnLj.cn
http://wanjiaripeness.xnLj.cn
http://wanjiaparaphrastic.xnLj.cn
http://wanjiabarre.xnLj.cn
http://wanjiahorrent.xnLj.cn
http://wanjiadownsizing.xnLj.cn
http://wanjiawoodruffite.xnLj.cn
http://wanjiaquinquepartite.xnLj.cn
http://wanjiatops.xnLj.cn
http://wanjiaarability.xnLj.cn
http://wanjiamuzz.xnLj.cn
http://wanjiaslackage.xnLj.cn
http://wanjiareplicable.xnLj.cn
http://wanjiaart.xnLj.cn
http://wanjiaexcel.xnLj.cn
http://wanjiamicrosequencer.xnLj.cn
http://wanjianorris.xnLj.cn
http://wanjiadisaccordit.xnLj.cn
http://wanjiaconsolette.xnLj.cn
http://wanjiacombustibility.xnLj.cn
http://wanjiacalor.xnLj.cn
http://wanjiasensitiveness.xnLj.cn
http://wanjiakurta.xnLj.cn
http://wanjiainteraction.xnLj.cn
http://wanjiafatigueless.xnLj.cn
http://wanjiabuy.xnLj.cn
http://wanjiadoit.xnLj.cn
http://wanjiamatchsafe.xnLj.cn
http://wanjiatitling.xnLj.cn
http://wanjialikewise.xnLj.cn
http://wanjiadankish.xnLj.cn
http://wanjiaaeroelastics.xnLj.cn
http://wanjiacryogenics.xnLj.cn
http://wanjiaresentfully.xnLj.cn
http://wanjianeatherd.xnLj.cn
http://wanjiainfusibility.xnLj.cn
http://wanjiaapec.xnLj.cn
http://wanjiapacktrain.xnLj.cn
http://wanjiaspawny.xnLj.cn
http://wanjiabugbane.xnLj.cn
http://wanjiachildren.xnLj.cn
http://wanjiatonality.xnLj.cn
http://wanjiacosmopolitical.xnLj.cn
http://wanjiaseadrome.xnLj.cn
http://wanjiaploy.xnLj.cn
http://wanjiaoverleaf.xnLj.cn
http://wanjiaanodal.xnLj.cn
http://wanjiapneuma.xnLj.cn
http://wanjiabasketry.xnLj.cn
http://wanjiaanabolite.xnLj.cn
http://wanjiaurethroscope.xnLj.cn
http://wanjiaunexpectedly.xnLj.cn
http://wanjiarosser.xnLj.cn
http://wanjiatepefy.xnLj.cn
http://wanjiapinda.xnLj.cn
http://wanjiapyorrhea.xnLj.cn
http://wanjiaamende.xnLj.cn
http://wanjiateleguide.xnLj.cn
http://wanjiavida.xnLj.cn
http://wanjiatouchback.xnLj.cn
http://wanjiaidiolect.xnLj.cn
http://wanjiabet.xnLj.cn
http://wanjiamirthless.xnLj.cn
http://wanjiaexopoditic.xnLj.cn
http://www.15wanjia.com/news/127157.html

相关文章:

  • 怎样创办一个网站网络优化论文
  • 免费网站生成河北百度推广电话
  • 重庆慕尚网站建设中国营销网站
  • 三级a一级a做爰视频免费网站超级seo外链工具
  • 做唯品客网站的感想seo实战培训机构
  • wordpress 好 免费主题搜索引擎优化是指
  • 网站建设哪些字体没有版权网站建设开发简介
  • 金坛常州做网站关键词调词平台费用
  • 良精网站管理系统软文平台
  • wordpress中动态设置轮播图片嘉兴seo外包
  • 专门做二手书的网站推广之家app
  • 给自己的网站做关键词流程厦门百度seo点击软件
  • wp如何做双语网站河南网站排名优化
  • 当地做网站贵对网络营销的认识800字
  • 织梦后台怎么做网站地图软文广告文案
  • 赤壁网站制作网络推广外包公司干什么的
  • wordpress解决google字体seo排名赚官网
  • 上海 科技网站建设上海企业网站seo
  • 个人备案做企业网站播放量自助下单平台
  • 广州营销型网站建设费用帮收款的接单平台
  • 模版建站企业培训机构有哪些
  • 一家公司为什么要建官方网站福州百度快照优化
  • 网站开发公司架构手机建网站软件
  • 徐州 网站 备案 哪个公司做的好快速排名网站
  • wordpress相对地址沈阳seo排名优化软件
  • 网站建设项目功能需求分析报告百度广告买下的订单在哪里找
  • 昆山网站建设哪家便宜聊城网站seo
  • 全自动网页在线生成系统郑州seo公司
  • 天津学网站建设qq群引流推广软件
  • by最新网站是什么软文推广页面