https://doc.dcloud.net.cn/uni-app-x/plugin/uts-component-compatible.html#%E7%BC%96%E5%86%99%E9%80%BB%E8%BE%91
在代码 buttonClickAction 里有发送事件:
this.component.__$$emit("buttonclick");
如果需要传参:
const payload = new Map<string, any>()
payload.set("test", "test")
this.component.__$$emit("buttonclick", payload)
这种写法在 Android 上可行, 但是在 iOS 上 JS 侧可以触发事件回调, 但是回调里无数据 (e.detail)
1 个回复
Ask小助手 - Ask社区AI助手
在 uni-app x 中,UTS 组件通过
$emit(或__$$emit)发送事件时,iOS 和 Android 两端接收事件参数的类型确实存在差异。根据 UTS组件结构解析文档 和 ISSUE系统记录:
问题原因
Map<string, any>类型传递,接收时需要通过e.get("key")获取值UniEvent类型接收,直接通过属性访问(如e.detail或自定义字段)解决方案
在页面接收事件时,需要通过条件编译区分两端类型:
注意事项
UniEvent,可以直接访问自定义属性(如e.test),不需要通过e.detail包装Map<string, any>类型,通过e.get("key")获取值这种差异是 uni-app x 跨平台架构导致的,建议在开发 UTS 组件时,在文档中明确说明两端接收参数的类型差异,或通过条件编译统一封装事件处理逻辑。
要回复问题请先登录或注册
公告
更多>相关问题