uni-app Alpha3.3.0 view中 对一个数组计算length或者数组加上[0] 报错
uni-app Alpha3.3.0 view中 对一个数组计算length或者数组加上[0] 报错
操作步骤:
- 运行到小程序 报错
预期结果:
- 正常运行
实际结果:
- 报错。
bug描述:
- 升级3.3.0之后。 template中对数组计算长度时报错。例如
{{arr.length}}或者{{arr[0]}}
| 项目信息 | 值 |
|-------------------|------------------|
| 产品分类 | uniapp/小程序/微信 |
| PC开发环境操作系统 | Mac |
| PC开发环境操作系统版本号 | mac 11.2.3 |
| HBuilderX类型 | Alpha |
| HBuilderX版本号 | 3.3.0 |
| 第三方开发者工具版本号 | 1.05.2110290 | 1.06.2110290 |
| 基础库版本号 | vue3.0 |
| 项目创建方式 | HBuilderX |
更多关于uni-app Alpha3.3.0 view中 对一个数组计算length或者数组加上[0] 报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html
之前的版本都没有问题,这个报错之后。 基本上判断数组为空的方式都不能用length判断了
更多关于uni-app Alpha3.3.0 view中 对一个数组计算length或者数组加上[0] 报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html
没有复现你说的问题,详细描述一下你的使用场景
TypeError: Cannot read property ‘length’ of undefined at Proxy._sfc_render (detail.js? [sm]:91) at renderComponentRoot (vue.runtime.esm.js?dc04:2699) at ReactiveEffect.componentUpdateFn [as fn] (vue.runtime.esm.js?dc04:2720) at ReactiveEffect.run (uni.api.esm.js?d5d0:433) at setupRenderEffect (vue.runtime.esm.js?dc04:2754) at mountComponent (vue.runtime.esm.js?dc04:2659) at createComponent3 (vue.runtime.esm.js?dc04:2797) at $createComponent (vue.runtime.esm.js?dc04:4907) at Ui.attached (uni.mp.esm.js?97ff:13) at i.safeCallback (VM4463 WAService.js:2)
请看我这一段:<view class="borderRadius u-p-t-30 u-p-b-40 u-p-l-30 u-p-r-30 bg_white u-m-t-30" v-if="info.receivers.length">
v-if=“info.receivers.length” 我加上这一段之后 最新版就会报 TypeError,在view元素内。 我用{{info.receivers[0]}}也会报错,回退版本就正常了
info.receivers这个字段是个数组。 我下面是循环这个数组,都是没有问题的
是运行到小程序,其他的没有试过
报错的源头就是这个:v-if=“info.receivers.length” 后期尝试。 直接将。 info.receivers.length放在模版里,例如:<view>{{info.receivers.length}}</view> 以及 <view>{{info.receivers[0]}}</view>都会报TypeError的错误, info.receivers确定是个数组。v-for是可以循环出来数据,升级版本之前都没问题,回退版本也是正常的
请提供完整的示例
我这边找到可以复现的方式了:定义个对象 如下: info:{ sub:[] }, 然后在模版中,{{info.sub.length}} 或者{{info.sub[0]}}
如果直接定一个数组。 sub:[] 这样是没有问题的,这个问题只在最新版出现,返回上一个版本是正常的
回复 DCloud_UNI_LXH: 我这边找到可以复现的方式了:定义个对象 如下:
info:{
sub:[]
},
然后在模版中,{{info.sub.length}} 或者{{info.sub[0]}}
回复 z***@126.com: 好的,我测试一下
回复 z***@126.com: 在 data 中定义 info:{ arr:[] } ,模板中访问 info.arr.length 和 info.arr[0]。编译到微信小程序,没有复现你说的问题
回复 DCloud_UNI_LXH: 这个问题要看控制器,会提示TypeError
回复 z***@126.com: 请提供完整的示例
回复 DCloud_UNI_LXH: 这个问题在我另外一台电脑上就是好的,暂时不知道怎么稳定复现,先这样吧,不过我提了另一个bug。也是新版本的,这个是可以复现的,要不帮我看看那个?
回复 z***@126.com: 可以尝试清楚微信开发者工具的缓存试试。令一个问题我会看的


