首页 鸿蒙 正文
  • 本文约675字,阅读需3分钟
  • 98
  • 0

emitter传值方式

温馨提示:本文最后更新于2024年9月24日 09:59,若内容或图片失效,请在下方留言或联系博主。

鸿蒙页面中 传值方式有很多 例如:

1. 有父子关系,我们使用的@Prop @Link 来实现 父传到子的数据,子传父我们使用的是回调函数的方式
2. 两个页面是在关系树上,比如:....->爷 -> 父 -> 子->.... 可以使用@Provider @Cusome
3. 甚至使用 AppStorage,localStroage,或者上传到首选项都可以(可以但没必要)
下面这个emitter传值 它主要针对于两个页面毫无关系的 emitter官方文档
页面A:A=>B
// 传入
emitter.emit({ eventId: 0 }, {  // eventId 传递标识(唯一)
// 可以接收参数
      })

页面B:A=>B

 // 页面加载就注册 emmiter的on事件
// eventId 唯一标识  和A页面保持一致
    emitter.on({ eventId: 0 }, () => { 
      console.log('llsix.com凌零博客')
    })

用完记得销毁

// 0 为eventId唯一标识 
emitter.off(0)

封装后的Emitter:

import { emitter } from '@kit.BasicServicesKit'

export class EmitterKey {
  static CHANGE_CART: emitter.InnerEvent = { eventId: 10001 }
}
emitter.on(EmitterKey.CHANGE_CART, () => {
// 执行的内容
      this.getList() // 获取服务器中购物车的数据
    })
// 执行一次
// 刷新一次购物车的数据
emitter.emit(EmitterKey.CHANGE_CART)
评论