HarmonyOS 鸿蒙Next Entry不支持继承,我们该如何组织页面以实现每个页面都需要的公共逻辑呢?

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next Entry不支持继承,我们该如何组织页面以实现每个页面都需要的公共逻辑呢?

按照Android经验, 我们会有一个BaseActivity作为页面父类,处理各种问题。 例如: Loading,接口报错,页面事件统计,停留时间,PV、UV等。  在ArkTS/ArkUI中,这套公共逻辑,我应该放到哪里去统一实现呢?

2 回复
自定义组件基于struct实现,struct + 自定义组件名 + {...}的组合构成自定义组件,不能有继承关系。

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-create-custom-components-V5#%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E7%9A%84%E5%9F%BA%E6%9C%AC%E7%BB%93%E6%9E%84

,可以利用NavPathStack管理查看路由信息。

可以在根组件中监听,或者在指定页面监听

根组件监听:

深色代码主题
复制
@Provide('pageInfos') @Watch('pathInfochange') pageInfos: NavPathStack = new NavPathStack()

其他页面:

深色代码主题
复制
@Consume('pageInfos') @Watch('pathInfochange') pageInfos: NavPathStack;

监听的方法:

深色代码主题
复制
pathInfochange() {

console.log(‘监听页面改变pageInfosChange:’ + JSON.stringify(this.pageInfos))

}

数据类型如下,注意需要判断pathArray为空的场景,避免数组越界

监听页面改变

深色代码主题
复制
pageInfosChange:{“pathArray”:[{“name”:“pageOne”},{“name”:“pageTwo”,“param”:{“count”:10},“checkNavDestinationFlag”:false}],“changeFlag”:2,“isReplace”:0,“type”:“NavPathStack”,“disableAllAnimation”:false,“animated”:true,“nativeStack”:{}}

更多关于HarmonyOS 鸿蒙Next Entry不支持继承,我们该如何组织页面以实现每个页面都需要的公共逻辑呢?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,Next Entry不支持继承,但可以通过组合模式或者利用服务(Service)和事件(Event)机制来组织页面并实现公共逻辑。

  1. 组合模式: 可以通过创建公共组件或基础页面,并在各个页面中嵌套这些公共组件或基础页面。公共组件或基础页面包含所有页面共用的逻辑和UI元素,这样可以在不使用继承的情况下实现公共逻辑。

  2. 服务(Service): 将公共逻辑封装在独立的服务中,然后在各个页面中调用这些服务。服务可以在后台运行,为多个页面提供统一的数据处理或业务逻辑支持。

  3. 事件(Event)机制: 利用HarmonyOS提供的事件机制,可以在不同页面之间传递事件和数据。通过定义自定义事件,可以在一个页面中触发事件,并在另一个页面中监听和处理该事件,从而实现公共逻辑。

  4. 全局变量或上下文(Context): 使用全局变量或上下文来存储公共数据和逻辑。全局变量可以在多个页面之间共享数据,而上下文可以存储与页面相关的数据和逻辑。

通过上述方法,可以在不使用继承的情况下,有效地组织HarmonyOS鸿蒙系统中的页面并实现公共逻辑。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部