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>
附图

更多关于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>

