uniapp通过自定义事件进行页面通讯

个人成长 | 独立开发者 | 创业历程 | 赚钱思维
大家好,我是一名独立开发者。在这里跟大家分享独立开发日常,编程技巧。欢迎大家跟我交流软件开发的一切事情,更欢迎大家下载使用我们的APP。

应用场景:页面A跳转页面B,在页面B操作完成将结果返回页面A,返回是通过uni.navigateBack()方式返回,这个时候页面A是不会自动刷新页面的,但是页面B要将结果返回到页面A,在这种情景下就需要用到全局自定义事件来进行页面通讯。

具体看代码实现:

首先页面A创建一个自定义的监听事件 refreshPage,通过回调函数参数来接收页面B返回的结果。

onLoad((options)=>{

	uni.$on("refreshPage",(arg)=>{
		getAddressData(arg);
	})

})

页面B:我这里的业务是这样的。下面是一个用户的地址列表,用户选择完地址之后自动返回页面A,并将用户选择的地址信息在页面A中展示出来。

<radio-group @change="radioChange">

	<view class="row"   v-for="item in addressList" :key="item.id">
		<view class="row-1"><radio :value="item.id" :checked="index === current"  /></view>
		<view class="row-2">
			<view class="row-title">{{item.username}} {{item.phone}}</view>
			<view class="row-address">{{item.province}}{{item.city}}{{item.area}}{{item.detail}}</view>
		</view>

		<view class="row-3">
			<image src="../../static/icons/edit.png" class="imgicon" />
			<!-- <image src="../../static/logo.png" class="imgicon" style="margin-left:20rpx" /> -->
		</view>
	</view>

</radio-group>


const radioChange = (e)=>{

	console.log(e)
	let id = e.detail.value;
	uni.navigateBack({
		success: () => {
			uni.$emit('refreshPage', {"addressid":id})
		}
	})

}

通过uni.$emit 创建一个自定义事件 refreshPage ,同时传递参数。

最后在页面A退出的时候需要将全局的自定义事件refreshPage移除,需要在页面A中添加onUnload()事件。

onUnload(()=>{
    uni.off("refreshPage")
})

这样就可以实现页面之间的通讯。这是组合式API的写法。

------------------ 华丽分割线 ------------------
创业举步维艰,感谢各位支持
欢迎大家阅读我的创业笔记,如果你觉得这篇写得不错的话,可以关注我的公众号: 成长创业笔记 第一时间查阅我们的文章!感谢大家的支持。
欢迎大家下载使用我们的安卓APP:
  • ● 松鼠驾考:驾考刷题APP,新版的驾考题目内容持续更新。
  • ● 松鼠天气:简洁的天气预报,日历工具
  • ● 加我微信:zstxinghui
成长创业笔记
程序员小张
我们的主营业务:承接网站建设小程序开发安卓APP开发软著申请等。欢迎咨询!
扫一扫,加我微信
随机文章
开发者周记6:小木CMS上线主页
2024-06-21 23:18:21
官网的运营推广
2024-06-25 22:06:30
怎样选择一款适合自己的网站模板
2024-10-19 18:10:38
vue3状态管理pinia踩过的坑
2025-03-14 10:48:58
从失业到一腔热血的开始创业再到一地鸡毛
2025-04-01 20:03:14