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

应用场景:页面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开发。

微信号:zstxinghui

更欢迎大家使用我的APP

1、松鼠天气,简洁的天气预报,节日日历工具。

2、陪诊小程序,家政小程序等行业小程序。

程序员小张
世界上只有一种真正的英雄主义,就是认清了生活的真相后还依然热爱生活。
随机文章
安卓启动页的渐变效果实现
2024-06-08 00:20:38
开发者前沿网站终于在五一上线了
2024-06-09 13:50:18
MySql唯一性约束设置以及实际应用
2024-06-12 15:40:26
开发者周记5:今天小木CMS终于上线网站手机版本
2024-06-16 17:13:05
成长创业笔记17:2025年稳步前行,家政小程序发布新版本,继续出发
2025-01-10 23:36:15