HarmonyOS4.0系列——07、自定义组件的生命周期、路由以及路由传参

这篇具有很好参考价值的文章主要介绍了HarmonyOS4.0系列——07、自定义组件的生命周期、路由以及路由传参。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

自定义组件的生命周期

允许在生命周期函数中使用 Promise 和异步回调函数,比如网络资源获取,定时器设置等;

页面生命周期

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

onPageShow

页面加载时触发,页面每次显示时触发一次,包括路由过程、应用进入前台等场景。

onPageHide

从第一个页面跳转第二个页面后,第一个页面会最为后台,触发onPageHide生命周期

页面每次隐藏时触发一次,包括路由过程、应用进入后台等场景。
下面是代码尝试

LifeCycle页面

import router from '@ohos.router'
@Entry
@Component
struct LifeCycle {
  @State message: string = '第一页'

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(25)
        Divider()
        Button('Next').onClick(() => {
          router.pushUrl({url:'pages/LifeCycle2'})
        })
          .fontSize(25)
      }
      .width('100%')
    }
    .height('100%')
  }
  onPageShow() {
    console.log('第一页:——onPageShow')
  }

  onPageHide() {
    console.log('第一页:——onPageHide')
  }

  onBackPress() {
    console.log('第一页:——onBackPress')
  }
}

LifeCycle2页面

import router from '@ohos.router'

@Entry
@Component
struct LifeCycle2 {
  @State message: string = '第二页'

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(25)
        Divider()
        Button('Back').onClick((event: ClickEvent) => {
          router.back()
        })
          .fontSize(25)

      }
      .width('100%')
    }
    .height('100%')
  }

  onPageShow() {
    console.log('第二页:——onPageShow')
  }

  onPageHide() {
    console.log('第二页:——onPageHide')
  }

  onBackPress() {
    console.log('第二页:——onBackPress')
  }
}

效果的话大家可以从 DevEco Studio 左下角第四个日志中查看具体效果。

onBackPress

监听物理返回键,也就是手机上的回退,并不是路由连接router.back()的返回.
HarmonyOS4.0系列——07、自定义组件的生命周期、路由以及路由传参,TS,HarmonyOS,鸿蒙,typescript,前端,harmonyos

组件生命周期

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

aboutToAppear

在 build 构建之前渲染此生命周期。
详解:aboutToAppear 函数在创建自定义组件的新实例后,在执行其 build()函数之前执行。允许在 aboutToAppear 函数中改变状态变量,更改将在后续执行 build()函数中生效。

aboutToDisappear

组件销毁时触发,例如删除,移出等操作。
详解:aboutToDisappear 函数在自定义组件析构销毁之前执行。不允许在 aboutToDisappear 函数中改变状态变量,特别是@Link 变量的修改可能会导致应用程序行为不稳定。

例:

import router from '@ohos.router'

@Entry
@Component
struct LifeCycle {
  @State message: string = '第一页'
  @State status: boolean = true

  build() {
    Row() {
      Column({ space: 20 }) {
        Text(this.message)
          .fontSize(25)
        Divider()
        Button('Next').onClick(() => {
          router.pushUrl({ url: 'pages/LifeCycle2' })
        })
          .fontSize(25)
        Divider()
        if (this.status) {
          LifeCycle_son()
        }
        Button('上段文字显示/隐藏').onClick(() => {
          this.status = !this.status
        }).fontSize(25)
      }
      .width('100%')
    }
    .height('100%')
  }

  onPageShow() {
    console.log('第一页:——onPageShow')
  }

  onPageHide() {
    console.log('第一页:——onPageHide')
  }

  onBackPress() {
    console.log('第一页:——onBackPress')
  }
}

@Component
struct LifeCycle_son {
  build() {
    Column() {
      Text('我是第一页的一个子组件')
        .fontSize(30)
    }
  }
  // aboutToAppear函数在创建自定义组件的新实例后,在执行其build()函数之前执行。
  aboutToAppear() {
    console.log('我是第一页的一个子组件:aboutToAppear')
  }

  // aboutToDisappear函数在自定义组件析构销毁之前执行。
  aboutToDisappear() {
    console.log('我是第一页的一个子组件:aboutToDisappear')
  }
}

HarmonyOS4.0系列——07、自定义组件的生命周期、路由以及路由传参,TS,HarmonyOS,鸿蒙,typescript,前端,harmonyos

点击两次上段文字显示/隐藏按钮
依次出现上述的生命周期为:
HarmonyOS4.0系列——07、自定义组件的生命周期、路由以及路由传参,TS,HarmonyOS,鸿蒙,typescript,前端,harmonyos

可以看到,如果将组件删除的话就可以触发aboutTodisappear生命周期
再次点击显示时触发aboutToAppear生命周期。当然默认的话会先触发aboutToAppear,因为他默认组件LifeCycle_son是先存在的。

页面路由

路由跳转

router.pushUrl({ url: "路径" });

路由传参

router.pushUrl({
  url: "/pages/LifeCycle2",
  params: {
    id: 1,
    username: "Southern Wind",
    age: 18,
  },
});

接受参数username,在LifeCycle2页面router.getParams()

let username = router.getParams()['username'] as string

效果:
HarmonyOS4.0系列——07、自定义组件的生命周期、路由以及路由传参,TS,HarmonyOS,鸿蒙,typescript,前端,harmonyos

应用之间传参

公共数据共享创建参数

// 应用程序数据共享
AppStorage.Set('message','我要玩原神')
AppStorage.SetOrCreate('message2','Southern Wind')

其他页面获取此数据

let name:string = AppStorage.Get('message2')

注意:此Api需要用真机进行调试,模拟器没有效果的!!文章来源地址https://www.toymoban.com/news/detail-810877.html

到了这里,关于HarmonyOS4.0系列——07、自定义组件的生命周期、路由以及路由传参的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue2-replace属性、编程式路由导航、缓存路由组件、两个新的生命周期钩子、路由守卫、路由器工作模式

    🥔:如果事与愿违,那一定是上天另有安排 更多Vue知识请点击——Vue.js 1.作用:控制路由跳转时操作浏览器历史记录的模式 2.浏览器的历史记录有两种写入方式:分别为 push 和 replace , push是追加历史记录,replace是替换当前记录 。路由跳转时候 默认为push 3.如何开启replace模

    2024年02月10日
    浏览(50)
  • HarmonyOS4.0—自定义渐变导航栏开发教程

    今天要分享的是一个自定义渐变导航栏,本项目基于鸿蒙4.0。 先看效果: 这种导航栏在开发中也比较常见,特点是导航栏背景色从透明到不透明的渐变,以及导航栏标题和按钮颜色的变化。 系统的导航栏无法满足要求,我们需要自定义一个导航栏,我的思路是在导航栏中接

    2024年03月20日
    浏览(52)
  • 【HarmonyOS4.0】第七篇-ArkUI系统组件(二)

    鸿蒙开发系统组件详细剖析 进度条也是UI开发最常用的组件之一,ArkUI开发框架提供了两种类型的进度条: Progress 和 LoadingProgress ,前者可以精准指定进度,后者表示正在加载的状态,我们接下来对它们分别做下介绍。 5.1.Progress 5.1.1.Progress定义介绍 Progress 组件可以精确的设置

    2024年02月01日
    浏览(53)
  • 【HarmonyOS4.0】第六篇-ArkUI系统组件(一)

    组件是构建页面的核心,每个组件通过对数据和方法的简单封装,实现独立的可视、可交互功能单元。组件之间相互独立,随取随用,也可以在需求相同的地方重复使用。 1.1.Text定义介绍 Text 是显示文本的基础组件之一,它可以包含子组件 Span ,当包含 Span 时不生效,只显示

    2024年01月25日
    浏览(46)
  • 【HarmonyOS4.0】第六篇-ArkUI系统组件(二)

    鸿蒙开发系统组件详细剖析 进度条也是UI开发最常用的组件之一,ArkUI开发框架提供了两种类型的进度条: Progress 和 LoadingProgress ,前者可以精准指定进度,后者表示正在加载的状态,我们接下来对它们分别做下介绍。 5.1.Progress 5.1.1.Progress定义介绍 Progress 组件可以精确的设置

    2024年02月02日
    浏览(55)
  • 【HarmonyOS4.0】第九篇-ArkUI布局容器组件(一)

    容器组件指的是它可以包含一个或多个子组件的组件,除了前边介绍过的公共属性外。 线性容器类表示按照水平方向或者竖直方向排列子组件的容器,ArkUI开发框架通过 Row 和 Colum 来实现线性布局。 什么是主轴和纵轴? 对于线性容器来说,有主轴和纵轴之分: 如果布局是沿

    2024年02月02日
    浏览(44)
  • 【HarmonyOS4.0】第十一篇-ArkUI布局容器组件(三)

    GridContainer纵向排布栅格布局容器,仅在栅格布局场景中使用。该组件不再维护,推荐使用新组件GridCol、GridRow。 栅格容器组件,仅可以和栅格子组件(GridCol)在栅格布局场景中使用。 5.1.1.接口 栅格容器有columns、gutter、direction、breakpoints四个参数: 参数名 类型 必填 说明 gutt

    2024年01月19日
    浏览(50)
  • HarmonyOS4.0系统性深入开发21PageAbility组件概述

    PageAbility是包含UI界面、提供展示UI能力的应用组件,主要用于与用户交互。 开发者通过DevEco Studio开发平台创建PageAbility时,DevEco Studio会自动创建相关模板代码。PageAbility相关能力通过单独的featureAbility实现,生命周期相关回调则通过app.js/app.ets中各个回调函数实现。 PageAbili

    2024年01月19日
    浏览(53)
  • HarmonyOS4.0从零开始的开发教程10管理组件状态

    在应用中,界面通常都是动态的。如图1所示,在子目标列表中,当用户点击目标一,目标一会呈现展开状态,再次点击目标一,目标一呈现收起状态。界面会根据不同的状态展示不一样的效果。 图1 展开/收起目标项 ArkUI作为一种声明式UI,具有状态驱动UI更新的特点。当用户

    2024年02月04日
    浏览(43)
  • HarmonyOS4.0从零开始的开发教程11Video组件的使用

    在手机、平板或是智慧屏这些终端设备上,媒体功能可以算作是我们最常用的场景之一。无论是实现音频的播放、录制、采集,还是视频的播放、切换、循环,亦或是相机的预览、拍照等功能,媒体组件都是必不可少的。以视频功能为例,在应用开发过程中,我们需要通过

    2024年02月04日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包