dcloudio / uni-app

A cross-platform framework using Vue.js
https://uniapp.dcloud.io
Apache License 2.0
39.92k stars 3.62k forks source link

vue3 版本不支持 三层嵌套组件 中间组件绑定 v-bind='$attrs' 里层组件$emit通知顶层组件 #3749

Closed dang0705 closed 1 year ago

dang0705 commented 2 years ago

问题描述 VUE3 官方的 祖-父-孙 组件,孙组件 可以直接通过 父组件内 在 孙组件上 v-bind='$attrs',内部$emit,直接通知祖辈组件。 但uni app 这方面的表现 和 官方有差异

复现步骤 [复现问题的步骤]

祖辈组件 grandFather.vue < father @getGrandSonEvent="event" / >

父组件 father.vue < grandson v-bind=“$attrs” / > options-api中的选项 inheritAttrs: false

孙组件 grandson.vue this.$emit('getGrandSonEvent',1)

以上代码 vue3 下 h5端表现正常, 小程序无法运行

[或者可以直接贴源代码]

预期结果 小程序编译后 祖辈组件 可以获得 孙组件抛出的数据,参考vue3官网 https://v3.cn.vuejs.org/guide/migration/listeners-removed.html#%E6%A6%82%E8%A7%88 实际结果 小程序编译后 祖辈组件 无法获得 孙组件抛出的数据

系统信息:

补充信息 [可选] [根据你的分析,出现这个问题的原因可能在哪里?]

yoyo837 commented 2 years ago
image

我这样也不行

yoyo837 commented 2 years ago

内置暂不支持 https://github.com/dcloudio/uni-app/issues/3330#issuecomment-1150629776

fxy060608 commented 1 year ago

#3330 (comment)

仅支持自定义组件使用v-bind,内置组件不支持