v-for 语法在 uni-app 只有一个变量且变量名包含中文时工作异常
v-for 语法在 uni-app 只有一个变量且变量名包含中文时工作异常
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | 11 | HBuilderX |
示例代码:
<template>
<view class="content">
<view v-for="item in items" @click="log(item)" class="cphm-item" >
{{ item }}
</view>
----------------
<view v-for="带中文item in items" @click="log(带中文item)" class="cphm-item" >
{{ 带中文item }}
</view>
</view>
</template>
<script>
export default {
data() {
return {
items: ['item1','item2','item3']
}
},
methods: {
log(msg){
console.log(msg)
}
}
}
</script>
操作步骤:
- 运行后点击就复现
预期结果:
- 点击不同的view打印不同的内容
实际结果:
- 包含中文的变量名只打印数组中的第一个对象
bug描述:
uniapp项目中 v-for 语法在只有一个变量且变量名包含中文时工作异常, vue2和vue3都异常,在纯vue3项目中没有该问题
更多关于v-for 语法在 uni-app 只有一个变量且变量名包含中文时工作异常的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
感谢反馈,已复现此问题,先注意规避使用中文给v-for的遍历变量命名吧。
更多关于v-for 语法在 uni-app 只有一个变量且变量名包含中文时工作异常的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个已知的uni-app编译处理问题,当v-for循环变量名包含中文时会出现异常。建议避免在v-for中使用中文变量名,改用英文变量名即可正常工作。
问题原因:
- uni-app的编译器在处理模板时对中文变量名的支持不完善
- 在模板转译过程中,中文变量名可能被错误处理
解决方案:
<view v-for="item in items" [@click](/user/click)="log(item)" class="cphm-item">
{{ item }}
</view>
替代方案(如需保留中文语义):
<view v-for="(item, index) in items" [@click](/user/click)="log(item)" class="cphm-item">
{{ item }}
</view>