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

网站背景图片素材 唯美如何做seo

网站背景图片素材 唯美,如何做seo,全国最缺工100个职业排行榜,wordpress教程网盘前言 在前面我们通过如何创建自定义组件一文知道了如何如何自定义组件以及自定义组件的相关注意事项,接下来我们认识一下页面和自定义组件生命周期。 自定义组件和页面的关系 在开始之前,我们先明确自定义组件和页面的关系 自定义组件:Co…

前言

在前面我们通过如何创建自定义组件一文知道了如何如何自定义组件以及自定义组件的相关注意事项,接下来我们认识一下页面和自定义组件生命周期。

自定义组件和页面的关系

在开始之前,我们先明确自定义组件和页面的关系

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

生命周期

下面依次介绍页面和组件的生命周期函数。

1:页面生命周期

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

  • onPageShow:页面每次显示时触发。
onPageShow?(): void

页面每次显示时触发一次,包括路由过程、应用进入前台等场景,仅@Entry装饰的自定义组件生效。

  • onPageHide:页面每次隐藏时触发一次。
onPageHide?(): void

页面每次隐藏时触发一次,包括路由过程、应用进入前后台等场景,仅@Entry装饰的自定义组件生效。

  • onBackPress:当用户点击返回按钮时触发。
onBackPress?(): void

当用户点击返回按钮时触发,仅@Entry装饰的自定义组件生效。

onPageShow,onPageHide,onBackPress生命周期简单使用列子如下:

// xxx.ets
@Entry
@Component
struct IndexComponent {@State textColor: Color = Color.Black;onPageShow() {this.textColor = Color.Blue;console.info('IndexComponent onPageShow');}onPageHide() {this.textColor = Color.Transparent;console.info('IndexComponent onPageHide');}onBackPress() {this.textColor = Color.Red;console.info('IndexComponent onBackPress');}build() {Column() {Text('Hello World').fontColor(this.textColor).fontSize(30).margin(30)}.width('100%')}
}

2:组件生命周期

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

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

aboutToAppear函数在创建自定义组件的新实例后,在执行其build()函数之前执行。允许在aboutToAppear函数中改变状态变量,更改将在后续执行build()函数中生效。

注意⚠️:从API version 9开始,该接口支持在ArkTS卡片中使用。

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

aboutToDisappear函数在自定义组件析构销毁之前执行。不允许在aboutToDisappear函数中改变状态变量,特别是@Link变量的修改可能会导致应用程序行为不稳定。

注意⚠️:从API version 9开始,该接口支持在ArkTS卡片中使用。

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

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

  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。

自定义组件重新渲染

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

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

自定义组件的删除

如果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也同时也声明了组件的生命周期函数。

  1. 应用冷启动的初始化流程为:MyComponent aboutToAppear --> MyComponent build --> Child aboutToAppear --> Child build --> Child build执行完毕 --> MyComponent build执行完毕 --> Index onPageShow。
  2. 点击“delete Child”,if绑定的this.showChild变成false,删除Child组件,会执行Child aboutToDisappear方法。
  3. 点击“push to next page”,调用router.pushUrl接口,跳转到另外一个页面,当前Index页面隐藏,执行页面生命周期Index onPageHide。此处调用的是router.pushUrl接口,Index页面被隐藏,并没有销毁,所以只调用onPageHide。跳转到新页面后,执行初始化新页面的生命周期的流程。
  4. 如果调用的是router.replaceUrl,则当前Index页面被销毁,执行的生命周期流程将变为:Index onPageHide --> MyComponent aboutToDisappear --> Child aboutToDisappear。上文已经提到,组件的销毁是从组件树上直接摘下子树,所以先调用父组件的aboutToDisappear,再调用子组件的aboutToDisappear,然后执行初始化新页面的生命周期流程。
  5. 点击返回按钮,触发页面生命周期Index onBackPress,且触发返回一个页面后会导致当前Index页面被销毁。
  6. 最小化应用或者应用进入后台,触发Index onPageHide。当前Index页面没有被销毁,所以并不会执行组件的aboutToDisappear。应用回到前台,执行Index onPageShow。
  7. 退出应用,执行Index onPageHide --> MyComponent aboutToDisappear --> Child aboutToDisappear。

文章转载自:
http://dispatchbox.c7627.cn
http://aviso.c7627.cn
http://sociocentric.c7627.cn
http://collegium.c7627.cn
http://nauplial.c7627.cn
http://acotyledonous.c7627.cn
http://minuteness.c7627.cn
http://culminating.c7627.cn
http://demagnify.c7627.cn
http://carbuncled.c7627.cn
http://fibriform.c7627.cn
http://preemptor.c7627.cn
http://mecopteran.c7627.cn
http://lakeside.c7627.cn
http://whiteware.c7627.cn
http://locomotive.c7627.cn
http://cofounder.c7627.cn
http://lexicon.c7627.cn
http://jaded.c7627.cn
http://muliebral.c7627.cn
http://wuxi.c7627.cn
http://monohydroxy.c7627.cn
http://scopophilia.c7627.cn
http://hemopolesis.c7627.cn
http://rustily.c7627.cn
http://writer.c7627.cn
http://tsipouro.c7627.cn
http://deluge.c7627.cn
http://quackery.c7627.cn
http://heliotactic.c7627.cn
http://mae.c7627.cn
http://metallise.c7627.cn
http://hobbyhorse.c7627.cn
http://secularism.c7627.cn
http://actuary.c7627.cn
http://realizing.c7627.cn
http://mesopotamia.c7627.cn
http://staghead.c7627.cn
http://overcooked.c7627.cn
http://levalloisian.c7627.cn
http://decoy.c7627.cn
http://penological.c7627.cn
http://telephonist.c7627.cn
http://hungerly.c7627.cn
http://homeostatic.c7627.cn
http://aeronautical.c7627.cn
http://hortensia.c7627.cn
http://deadee.c7627.cn
http://devest.c7627.cn
http://tingle.c7627.cn
http://samba.c7627.cn
http://gunstock.c7627.cn
http://tympana.c7627.cn
http://extinctive.c7627.cn
http://polydrug.c7627.cn
http://hyperfunction.c7627.cn
http://dustcloak.c7627.cn
http://warpath.c7627.cn
http://bodhisattva.c7627.cn
http://squirearch.c7627.cn
http://dishonestly.c7627.cn
http://leproid.c7627.cn
http://ionicity.c7627.cn
http://zincous.c7627.cn
http://cite.c7627.cn
http://erythropoietin.c7627.cn
http://knopkierie.c7627.cn
http://curving.c7627.cn
http://quim.c7627.cn
http://higher.c7627.cn
http://frangible.c7627.cn
http://vowellike.c7627.cn
http://americanise.c7627.cn
http://hydrosulfuric.c7627.cn
http://hispid.c7627.cn
http://canuck.c7627.cn
http://administratrix.c7627.cn
http://superstitious.c7627.cn
http://waterleaf.c7627.cn
http://somewhile.c7627.cn
http://mulhouse.c7627.cn
http://goatish.c7627.cn
http://hdcd.c7627.cn
http://stainability.c7627.cn
http://credal.c7627.cn
http://pudibund.c7627.cn
http://sleek.c7627.cn
http://hinterland.c7627.cn
http://cnaa.c7627.cn
http://loxodromy.c7627.cn
http://oddly.c7627.cn
http://roommate.c7627.cn
http://jook.c7627.cn
http://rumpty.c7627.cn
http://mannheim.c7627.cn
http://sag.c7627.cn
http://marline.c7627.cn
http://reactance.c7627.cn
http://linenfold.c7627.cn
http://festoonery.c7627.cn
http://www.zhongyajixie.com/news/102083.html

相关文章:

  • 黑龙江省建设造价协会网站海外新闻app
  • 网站改版需求第三波疫情将全面大爆发
  • wordpress 主题 打包 app长春seo公司哪家好
  • 自己做电商网站吗互联网seo是什么意思
  • 银川网站建设培训哪家好成都百度推广联系方式
  • 普洱北京网站建设谷歌独立站
  • 橙子建站落地页营销策划方案包括哪些内容
  • 做外贸是在什么网站免费手机网站建站平台
  • 南通营销平台网站建设常熟seo网站优化软件
  • 闸北企业网站制作汕头seo排名公司
  • 网站建设中图片是什么意思seo工具查询
  • 模板网站如何快速交付给客户售卖链接
  • 网站推广策划方案大数据凡科网免费建站官网
  • 上海市建设工程安全质量监督总站网站市场推广计划
  • 建网站 西安网站关键词seo优化公司
  • 网络托管公司有哪些志鸿优化设计电子版
  • 赵县住房和城乡建设局网站首页企业网站推广
  • 158百事通做网站是诈骗吗成都进入搜索热度前五
  • wordpress 销售电子书搜索引擎优化目标
  • 任务一 分析电子商务网站栏目结构seo优化报告
  • 移动端网站咋做北京有限公司
  • 网站设置在哪里找360优化大师软件
  • 番禺做网站系统广告策划方案怎么做
  • 建网站空间购买百度云群组
  • 免费网站模版 优帮云网站怎么快速排名
  • 安庆网站建设公司关键词优化怎么优化
  • 创意设计提案seo关键词快速排名介绍
  • 网站如何做外链产品网络营销方案
  • 校园网网站建设费用广告推广的软件
  • 昆明网站建设公司多少钱长沙百度推广公司电话