uniapp页面间通信uni.$on与通过uni.navigateTo中eventChannal的方式的区别
- 背景。无意间开发uniapp程序用到了页面跳转数据传递的两种方式。但各用于什么场景,有什么区别记录一下。大模型给的内容较多,贴出一些结论。
- eventChannel文档链接
- uni.$emit文档链接
-
页面跳转而非全局事件通知,优先选择
eventChanel
的方式。- 首先它可以方便的传递json数据,而无需通过向url后跟随参数的方式进行加码转码,非常方便
- 另外可以双向通信。当使用navigateBack回到页面的时候还可以发消息通知原页面。
- 而uni.$on的方式只能用于监听不能够传递。
- 另外这两种方式在页面布局上也不同。chanel方式捆绑着navigateTo进行消息发送和事件定义监听。而 o n 的方式是通过全局 ‘ u n i . on的方式是通过全局`uni. on的方式是通过全局‘uni.on`声明
-
eventChannel方式
-
注册。接收调用方传递的参数
- 发送。打开页面成功后,前提是被调用的页面已成功通过onLoad方法注册了相同的事件
moreDoctor
。就通过emit发送数据,被调用页面接收处理。
uni.$on的方式
- 总结。
- 翻阅uniapp官网查看文档有时随所可以用,但用的不对,需要改正。
- 发现有相同功能点。意识到区别,避免滥用。