uni-app vue2 微信小程序 slot name是数字时运行报错 h5正常

uni-app vue2 微信小程序 slot name是数字时运行报错 h5正常

操作步骤:

见描述

预期结果:

不报错

实际结果:

报错

bug描述:

测试代码

<template>  
    <view>  
        <slot name="1">12334</slot>  
    </view>  
</template>

编译产物

<view class="{{[virtualHostClass]}}" style="{{virtualHostStyle}}">
    <block wx:if="{{$slots.1}}">
        <slot name="1"></slot>
    </block>
    <block wx:else>12334</block>
</view>

附图

image


更多关于uni-app vue2 微信小程序 slot name是数字时运行报错 h5正常的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

感谢反馈,问题已复现,已加分。
临时解决方案
替换 /Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/uni-template-compiler/lib/template/traverse.js 为附件文件

更多关于uni-app vue2 微信小程序 slot name是数字时运行报错 h5正常的实战教程也可以访问 https://www.itying.com/category-93-b0.html


4.81.2025091909-alpha 版本的HX已修复此问题,可升级到此版本

在uni-app的Vue2版本中,微信小程序平台对slot的name属性使用数字存在限制。这是由于微信小程序原生的WXML模板语法不支持以数字开头的插槽名称,而H5端没有此限制。

问题分析:

  • 微信小程序的WXML模板中,插槽名称需要符合变量命名规范(不能以数字开头)
  • 编译后的代码{{$slots.1}}在微信小程序运行时无法正确解析
  • H5端使用的是标准HTML,对slot名称没有此限制

解决方案: 将slot名称改为字母开头:

<template>  
    <view>  
        <slot name="slot1">12334</slot>  
    </view>  
</template>

替代方案: 如果必须使用数字标识,可考虑:

<slot :name="'slot'+1">12334</slot>
回到顶部