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)