uni-app v-if 在微信小程序中表现错误,当函数返回三个true时条件不成立,h5无问题。
uni-app v-if 在微信小程序中表现错误,当函数返回三个true时条件不成立,h5无问题。
示例代码:
<template v-if="one() && two() && three()">
哈哈哈
</template>
methods: {
one() {
return true;
},
two() {
return true;
},
three() {
return true;
}
}
操作步骤:
新建uniapp项目,将上述代码粘贴到页面中即可复现。
预期结果:
这个条件应该是成立的
实际结果:
在微信小程序中,这个条件不成立,判断里的内容不显示。
bug描述:
在微信小程序中无法显示条件判断中的内容,说明条件未成立。H5中就会显示内容。
| 信息类别 | 信息内容 |
|---|---|
| 产品分类 | uniapp/小程序/微信 |
| PC开发环境 | Windows |
| 操作系统版本 | win10 |
| HBuilderX类型 | 正式 |
| HBuilderX版本 | 3.2.16 |
| 开发工具版本 | 1.05.2106250 |
| 基础库版本 | 2.21.1 |
| 项目创建方式 | HBuilderX |

更多关于uni-app v-if 在微信小程序中表现错误,当函数返回三个true时条件不成立,h5无问题。的实战教程也可以访问 https://www.itying.com/category-93-b0.html
奇怪的是,两个条件的时候,这个就又显示了。
<template v-if="one() && two()">
哈哈哈
</template>
这样就显示了。这是什么情况?
这是编译到微信小程序的样子:
<view class="content">
<image class="logo" src="/static/logo.png"></image>
<view class="text-area"><text class="title">{{title}}</text></view>
<block wx:if="{{$root.m1}}">哈哈哈</block>
</view>
更多关于uni-app v-if 在微信小程序中表现错误,当函数返回三个true时条件不成立,h5无问题。的实战教程也可以访问 https://www.itying.com/category-93-b0.html
其实这种语法不是很推荐,用computed 他不香么?
这个问题是由于微信小程序平台对模板表达式的处理机制与H5不同导致的。在微信小程序中,模板表达式中的函数调用会受到限制。
原因分析: 微信小程序的模板编译机制在处理复杂表达式时,特别是多个函数调用组合的逻辑运算,可能会出现解析异常。虽然每个函数都返回true,但整个表达式在小程序环境中可能被错误地评估为false。
解决方案:
- 推荐方案:使用计算属性
<template v-if="shouldShow">
哈哈哈
</template>
computed: {
shouldShow() {
return this.one() && this.two() && this.three();
}
},
methods: {
one() { return true; },
two() { return true; },
three() { return true; }
}
- 备选方案:使用变量缓存结果
data() {
return {
conditionResult: false
};
},
mounted() {
this.conditionResult = this.one() && this.two() && this.three();
}

