JackDeng
JackDeng
  • 发布:2022-01-06 14:44
  • 更新:2024-03-14 09:58
  • 阅读:831

this.$emit 小程序返回值出错

分类:uni-app

产品分类: uniapp/小程序/微信

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win11

HBuilderX类型: 正式

HBuilderX版本号: 3.3.5

第三方开发者工具版本号: 1.05.2111300

基础库版本号: 2.21.2

项目创建方式: HBuilderX

操作步骤:

组件内

this.$emit("go", 1)  

父级

@go="go"  
go(e) {  
    console.log(e, "dds")  
}

预期结果:

打印
1 'dds'

实际结果:

打印

{type: "go", timeStamp: 373392, target: {…}, currentTarget: {…}, mark: {…}, …}changedTouches: undefinedcurrentTarget: {id: "", dataset: {…}}detail: {__args__: Array(1)}__args__: Array(1)0: 1length: 1nv_length: (...)__proto__: Array(0)__proto__: Objectmark: {}mp: {type: "go", timeStamp: 373392, target: {…}, currentTarget: {…}, mark: {…}, …}mut: falsepreventDefault: ƒ noop()stopPropagation: ƒ noop()target: {id: "", dataset: {…}, __args__: Array(1)}timeStamp: 373392touches: undefinedtype: "go"_requireActive: undefined__proto__: Object "dds"

bug描述:

HbuilderX 3.3.5.20211229版本,组件内使用this.$emit("go", 1),编译到小程序,在父组件获取返回值和以前不一样了(图一),编译到h5正常(图2),HbuilderX 3.2.9 编译到小程序也正常。

2022-01-06 14:44 负责人:无 分享
已邀请:
xuhao

xuhao

应该是使用的组件名称冲突了
这里我先使用了NavigationBar作为组件的名称


使用emit传参的时候就有问题


印出这个

后面把使用的组件名称改成sfnavigation-bar这个


打印就没问题了

  • 6***@qq.com

    24年3.13团队有个同学反馈,遇到同样问题,我是各种降uniapp版本,node版本还是复现。 偶尔看到答主这答案。改组件名解决,应该是哪个组件名可能和uview组件或者第三库同名了。 谢谢答主!!!

    2024-03-14 09:57

DCloud_UNI_Anne

DCloud_UNI_Anne

6***@qq.com

6***@qq.com - 我最帅

我也遇见同样问题 子组件传父组件 传不过去

1***@qq.com

1***@qq.com - 693755

同样遇到了这个问题,父组件中获取到的值像是方法本身的事件对象,而非 $emit() 的传值

1***@qq.com

1***@qq.com

有什么解决方法吗

6***@qq.com

6***@qq.com

参考1楼答主,组件重名会导致这个问题,可以尝试换个名称。 这个重名可能是和第三方库重名!!2024.3.13遇到同样问题,重名导致的。

要回复问题请先登录注册