uni-app什么时候能支持v-bind, $attrs和$listeners呢?
uni-app什么时候能支持v-bind, $attrs和$listeners呢?
觉得这个还是很常用的。
编译时提示暂不支持,切到源码,看到有:
```javascript
const traverses = {
_c: traverseCreateElement,
_t: traverseRenderSlot,
_l: traverseRenderList,
_u: traverseResolveScopedSlots,
_v: traverseCreateTextVNode,
_e: traverseCreateEmptyVNode,
_g: ‘暂不支持 v-on="$listeners" 用法’,
_b: ‘暂不支持 v-bind="" 用法’
}
```
同求
Error: 暂不支持 v-on="$listeners" 用法 这个功能很方便,希望能解决一下
2019提过的到2022年都还不支持。。。
23年3月依旧不支持
回复 2***@qq.com: 23年11月了,依旧不支持
同求~~~
旧的组件模式好像是支持的。新的就不支持了。呵呵。
在对UI框架二次封装的时候发现使用attrs编译失败,真的希望编译工具能尽早支持
同求啊,这么有用的特性竟然都没有????
顶上去
2022年9月份了,什么时候支持
11月了依旧不支持唉
艹,这么好用的东西居然不支持
2023年9月了,依旧不支持
刚好我也在 找。。。
2023年10月11日10:14:25 依旧不支持
2023年12月还不行 哈哈哈
2024年8月6号 还是不支持
2024.8.22还是不支持
2024.12.31还是不支持
2025.1.6 依旧不支持,如果官方不打算支持,就不要提示 Error: 暂不支持 v-on="$listeners" 用法,什么叫暂不支持,还是要多读点书
啊,原来不支持的啊,我还打算对uview,进行二次封装的。看样子要放弃这个想法了。
关于uni-app何时能支持Vue.js中的v-bind
, $attrs
和$listeners
,这主要取决于uni-app框架的更新迭代和社区反馈。不过,我们可以探讨如何在当前uni-app框架下,通过一些替代方案或技巧来实现类似的功能。
1. v-bind
替代方案
在uni-app中,v-bind
主要用于动态绑定属性,这在uni-app中已经被原生支持。例如:
<template>
<view :style="dynamicStyle">Hello, uni-app!</view>
</template>
<script>
export default {
data() {
return {
dynamicStyle: {
color: 'red',
fontSize: '20px'
}
}
}
}
</script>
上述代码中的:style
就是v-bind:style
的简写,用于动态绑定样式。
2. $attrs
和 $listeners
替代方案
在Vue.js中,$attrs
包含了父作用域中不作为prop被识别(且获取)的特性绑定(class和style除外),$listeners
包含了父作用域中的(不含.native修饰器的)v-on事件监听器。
在uni-app中,虽然直接访问$attrs
和$listeners
可能受限,但我们可以通过其他方式模拟这些功能。
替代 $attrs
可以通过props
传递所有需要的属性,并在子组件中手动处理这些属性。
<!-- 父组件 -->
<template>
<child-component v-bind="allProps"></child-component>
</template>
<script>
export default {
data() {
return {
allProps: {
someProp: 'value',
anotherProp: 123
}
}
}
}
</script>
<!-- 子组件 -->
<template>
<view>{{ someProp }} - {{ anotherProp }}</view>
</template>
<script>
export default {
props: ['someProp', 'anotherProp']
}
</script>
替代 $listeners
可以通过$emit
在子组件中触发父组件的事件监听器,并在父组件中显式绑定这些事件。
<!-- 父组件 -->
<template>
<child-component @custom-event="handleCustomEvent"></child-component>
</template>
<script>
export default {
methods: {
handleCustomEvent(data) {
console.log(data);
}
}
}
</script>
<!-- 子组件 -->
<template>
<button @click="triggerEvent">Click me</button>
</template>
<script>
export default {
methods: {
triggerEvent() {
this.$emit('custom-event', { message: 'Hello from child' });
}
}
}
</script>
通过这些替代方案,我们可以在uni-app中模拟Vue.js中的$attrs
和$listeners
功能。不过,随着uni-app框架的不断完善,这些特性可能会被原生支持,建议持续关注uni-app的更新日志。