1***@qq.com
1***@qq.com
  • 发布:2022-05-10 18:05
  • 更新:2022-05-11 14:53
  • 阅读:296

【报Bug】v-if条件 编译为微信小程序错误

分类:uni-app

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

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 3.4.7

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

基础库版本号: 8.0.18

项目创建方式: HBuilderX

操作步骤:

<template>
<view v-if="(type && type.includes('aaa')) || !type.includes('bbb')">111111</view>
</template>
<script>
export default {
name: 'MyFriends',
data() {
return {
type: 'aaa'
}
}
}
</script>

预期结果:

var g0 = _vm.type && _vm.type.includes("aaa")
var g1 = g0 || !_vm.type.includes("bbb")

实际结果:

var g0 = _vm.type && _vm.type.includes("aaa")
var g1 = _vm.$root.g0 || !_vm.type.includes("bbb")

bug描述:

源码为
v-if="(['add','apply'].includes(item.type)&&apply[item.type+'List'].length) || !['add','apply'].includes(item.type)"
编译后为
var g0 = ["add", "apply"].includes(item.type) && _vm.apply[item.type + "List"].length
var g1 = item.g0 || !["add", "apply"].includes(item.type)

注意 “var g1 = item.g0 || !["add", "apply"].includes(item.type)” 此处 item.g0 是不对的 应该为 g0 || !["add", "apply"].includes(item.type)

附件里面有demo

2022-05-10 18:05 负责人:无 分享
已邀请:
呆狗的一生

呆狗的一生 - 呆狗的一生

不明白你说的是什么,我测试了好久,小程序的行为都正常。你上传的demo中代码和你bug描述里的代码不一样。不知道你要测试的是什么

呆狗的一生

呆狗的一生 - 呆狗的一生

<template>  
    <view v-if="(type && type.includes('aaa')) || !type.includes('bbb')">111111</view>  
</template>  
<script>  
    export default {  
        name: 'MyFriends',  
        data() {  
            return {  
                type: 'aaa'  
            }  
        }  
    }  
</script>
  • 1***@qq.com (作者)

    次代码在vue3 下运行,并且编译为 小程序。 然后查看小程序对应的源码。

    源码和我v-if 里面想表达的不是一个东西。虽然不报错但结果完全不对

    2022-05-11 14:29

  • 1***@qq.com (作者)

    可以加我QQ 说 1028932693

    2022-05-11 14:33

  • 1***@qq.com (作者)

    回复 1***@qq.com: 应该是vue2 的代码 编译为小程序,最近用多了vue3有点乱

    2022-05-11 14:46

DCloud_UNI_GSQ

DCloud_UNI_GSQ

参考:https://ask.dcloud.net.cn/question/143936

  • 1***@qq.com (作者)

    确认了问题就行,我们已经改为写自定义方法实现了

    2022-05-11 15:37

  • DCloud_UNI_GSQ

    回复 1***@qq.com: 好的,感谢反馈

    2022-05-11 15:43

该问题目前已经被锁定, 无法添加新回复