筝筝日上
筝筝日上
  • 发布:2025-11-06 16:34
  • 更新:2025-11-06 17:31
  • 阅读:81

【报Bug】v-for里的slot编译有问题

分类:uni-app

产品分类: uniapp/小程序/微信

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: x64

HBuilderX类型: 正式

HBuilderX版本号: 4.85

第三方开发者工具版本号: 1.06

基础库版本号: 3.9.3

项目创建方式: HBuilderX

操作步骤:

直接编译

预期结果:

<view wx:for="{{a}}" wx:for-item="item" wx:key="c"><slot name="{{item.a}}"></slot></view>

实际结果:

<view wx:for="{{a}}" wx:for-item="item" wx:key="c"><slot name="{{item.a}}"></slot><slot></slot></view>

bug描述:

<view v-for="(item, index) in dataList" :key="item.id" >
<slot :data="item"></slot>
</view>

编译成微信小程序多了一个<slot></slot>

<view wx:for="{{a}}" wx:for-item="item" wx:key="c"><slot name="{{item.a}}"></slot><slot></slot></view>

导致报错

More than one slot named "" are found inside a single component instance (in component "components/test-slot"). The first one was accepted.

2025-11-06 16:34 负责人:无 分享
已邀请:
jgj_app

jgj_app

我咋记得有个类似的问题

  • 筝筝日上 (作者)

    好像都是一个问题, 现在还没修复

    2025-11-06 16:52

  • 筝筝日上 (作者)

    编译过的微信小程序删除一下多余的<slot></slot>就不警告了, 但是太费劲了, 写插件也不能让用户都手动删一下

    2025-11-06 16:54

  • jgj_app

    回复 2***@qq.com: view 改成template 标签试试

    2025-11-06 16:57

  • 筝筝日上 (作者)

    回复 jgj_app: 也不行

    2025-11-06 17:03

  • jgj_app

    回复 2***@qq.com: 那就慢慢等他们修复

    2025-11-06 17:08

  • DCloud_UNI_JBB

    回复 2***@qq.com: 私信你了

    2025-11-06 17:19

jgj_app

jgj_app

https://ask.dcloud.net.cn/question/212522

jgj_app

jgj_app

https://ask.dcloud.net.cn/question/190689

DCloud_UNI_JBB

DCloud_UNI_JBB

等后续alpha发版会修复

DCloud_UNI_JBB

DCloud_UNI_JBB

临时解决方案

找到 HX根目录/Contents/HBuilderX/plugins/uniapp-cli-vite/node_modules/@dcloudio/uni-mp-compiler/dist/template/codegen.js

搜索 function genNode(node, context)

在上面添加以下代码

function isInVFor(node) {  
    while (node) {  
        if ((0, vFor_1.isForElementNode)(node)) {  
            return true;  
        }  
        node = node.parent;  
    }  
    return false;  
}

搜索 const isVIfSlot = (0, vIf_1.isIfElementNode)(node)

在上面添加

if (isInVFor(node)) {  
     return genSlot(node, context);  
 }

找到 HX根目录/Contents/HBuilderX/plugins/uniapp-cli-vite/node_modules/@dcloudio/uni-mp-compiler/dist/transform.js

搜索 context.parent = parent;

在上面添加 child.parent = parent;

  • 筝筝日上 (作者)

    好的, 期待下个版本, 这个只能解决个人的, 做成插件的话, 影响的用户有点多

    2025-11-06 17:39

要回复问题请先登录注册