uni-app v-for 代码转换小程序代码的bug
uni-app v-for 代码转换小程序代码的bug
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | windows11 | HBuilderX |
操作步骤:
<view v-for="day in 7" >
{{ day }}
</view>
<view wx:for="{{7}}" wx:for-item="day">
{{ day }}
</view>
这段代码在vue中应该输出 1234567 ,但是转换成微信小程序后输出的是 0123456
预期结果:
1234567
实际结果:
0123456
bug描述:
<view v-for="day in 7" >
{{ day }}
</view>
<view wx:for="{{7}}" wx:for-item="day">
{{ day }}
</view>
这段代码在vue中应该输出 1234567 ,但是转换成微信小程序后输出的是 0123456
更多关于uni-app v-for 代码转换小程序代码的bug的实战教程也可以访问 https://www.itying.com/category-93-b0.html
5 回复
这个不是bug,vue的规范是从0开始计数,有需要的话你可以处理一下
更多关于uni-app v-for 代码转换小程序代码的bug的实战教程也可以访问 https://www.itying.com/category-93-b0.html
我测试出来vue中是从1输出的
回复 霸道的温柔: 我的问题,打错字了,原生小程序是从0开始,vue是从1开始
回复 DCloud_UNI_JBB: 我的意思是应该转换的时候平台处理一下
这是由于uni-app编译时对v-for处理机制与微信小程序原生循环差异导致的。
在Vue中,v-for="day in 7"会生成从1到7的序列,而微信小程序的wx:for在处理数字时,会创建从0到6的数组(长度为7),索引从0开始。
解决方案:
- 使用数组范围(推荐)
<view v-for="day in 7" :key="day">
{{ day }}
</view>
编译为小程序时应改为:
<view wx:for="{{[1,2,3,4,5,6,7]}}" wx:for-item="day">
{{ day }}
</view>
- 调整循环逻辑
<view v-for="day in 7" :key="day">
{{ day + 1 }}
</view>
- 使用计算方法
computed: {
dayList() {
return Array.from({length: 7}, (_, i) => i + 1)
}
}
模板中:
<view v-for="day in dayList" :key="day">
{{ day }}
</view>

