uni-app 支付宝小程序不支持 $scopedSlots $slots

uni-app 支付宝小程序不支持 $scopedSlots $slots

示例代码:

<test>  
    <view></view>  
    <template #test>  
        <view>  
            哈啊哈哈  
        </view>  
    </template>  
</test>  

<template>  
    <view class="test-view">  
        <slot></slot>  
        <slot name="test"></slot>  
    </view>  
</template>

操作步骤:

如上代码

预期结果:

应该和其他小程序保持一致

实际结果:

获取不到

bug描述:

支付宝小程序不支持$scopedSlots $slots
在h5和微信小程序中都没有问题

示例图片 示例图片 示例图片

下载bug测试文件


更多关于uni-app 支付宝小程序不支持 $scopedSlots $slots的实战教程也可以访问 https://www.itying.com/category-93-b0.html

11 回复

补充: 这是uview的组件库示例项目,其中有很多也使用了$slots,但是可以看到报了很多错,并且样式错乱。而错误正是$slots引起的。


更多关于uni-app 支付宝小程序不支持 $scopedSlots $slots的实战教程也可以访问 https://www.itying.com/category-93-b0.html


如果不支持 ,请在文档里声明,谢谢!!!

官方可以给个反馈吗

稍等,会安排确认问题

回复 DCloud_UNI_LXH: 您好,请问这个问题确认了吗?

回复 DCloud_UNI_LXH: 问题确认了吗

我也遇见这个问题,请问有解决方案了么

有没有暂时的解决方案啊,回答一下啊

临时解决方案:(解决后传递的插槽值依然不可用,仅把 $slots, $scopedSlots 赋值为空对象,仅防止控制台报错)
// #ifdef MP-ALIPAY
// 解决支付宝小程序插槽不兼容问题
Vue.mixin({
beforeCreate () {
if (!this.$slots) Object.defineProperty(this, ‘$slots’, { value: {}})
if (!this.$scopedSlots) Object.defineProperty(this, ‘$scopedSlots’, { value: {}})
}
})
// #endif

支付宝小程序平台本身对Vue的$scopedSlots和$slots支持确实有限,这是由支付宝小程序底层实现机制决定的。在uni-app中,虽然框架已尽力抹平多端差异,但部分平台特性仍无法完全统一。

目前支付宝小程序不支持通过$scopedSlots和$slots访问插槽内容。作为替代方案,建议使用条件编译来处理这种平台差异:

<!-- #ifdef MP-ALIPAY -->
<!-- 支付宝小程序的替代实现 -->
<!-- #endif -->

<!-- #ifndef MP-ALIPAY -->
<!-- 其他平台的原始实现 -->
<!-- #endif -->
回到顶部