小工具知识网

当前位置: 首页 > 行业知识 > uniApp跨页面通讯$on、$emit、$once、$off使用场景及技巧

行业知识

uniApp跨页面通讯$on、$emit、$once、$off使用场景及技巧

2026-11-05 22:48:26 来源:互联网转载

大部分场景实际上利用$once、$emit、$off配合使用即可,直接上代码

在页面B中,离开时必须要销毁$once(xxx),因为在B页面,点击拍照才会触发$emit(xxx),如果通过滑动或点击头部返回页面A,$once(xxx)将会和下一次$emit(xxx)调用时,一起触发。
所以调用销毁方法$off(xxx)的实际很重要,onUnmounted配合nextTick使用,刚好不会影响上个页面A正常通过takePhoto 触发的事件

页面A

()
  按钮1  按钮2import { reactive, toRefs, onBeforeMount, onMounted } from 'vue'const state = reactive({  list1: [] as string[],  list2: [] as string[]})const fn1 = () => {  uni.navigateTo({ url: '页面B'})  uni.$once('xxx', () => {    // 监听后的逻辑  })}const fn2 = () => {  uni.navigateTo({ url: '页面B'})  uni.$once('xxx', () => {    // 监听后的逻辑  })}

页面B

  点击可返回    拍照import { reactive, toRefs, nextTick, onUnmounted } from 'vue'const takePhoto = () => {  const ctx = uni.createCameraContext();  ctx.takePhoto({    quality: 'high',    success: (res) => {      uni.$emit('xxx', res)    }  })}onUnmounted(() => {  nextTick(() => {    uni.$off('xxx')    uni.navigateBack()  })})
()

上一篇:轻松下载Bookshelf,获取阅读资源的实用指南

下一篇:手游方舟服务器怎么进?