运行到小程序 报错
- 发布:2021-12-01 14:34
- 更新:2021-12-02 10:20
- 阅读:346
产品分类: uniapp/小程序/微信
PC开发环境操作系统: Mac
PC开发环境操作系统版本号: mac 11.2.3
HBuilderX类型: Alpha
HBuilderX版本号: 3.3.0
第三方开发者工具版本号: 1.05.2110290 | 1.06.2110290
基础库版本号: vue3.0
项目创建方式: HBuilderX
操作步骤:
预期结果:
正常运行
正常运行
实际结果:
报错。
报错。
bug描述:
升级3.3.0之后。 template中对数组计算长度时报错。例如 {{arr.length}}或者{{arr[0]}}
3 个回复
z***@126.com (作者) - 没有
之前的版本都没有问题,这个报错之后。 基本上判断数组为空的方式都不能用length判断了
DCloud_UNI_LXH
没有复现你说的问题,详细描述一下你的使用场景
z***@126.com (作者)
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)
2021-12-02 10:11
z***@126.com (作者)
请看我这一段:<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">
2021-12-02 10:12
z***@126.com (作者)
v-if="info.receivers.length" 我加上这一段之后 最新版就会报 TypeError,在view元素内。 我用{{info.receivers[0]}}也会报错,回退版本就正常了
2021-12-02 10:13
z***@126.com (作者)
info.receivers这个字段是个数组。 我下面是循环这个数组,都是没有问题的
2021-12-02 10:14
z***@126.com (作者)
<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">
<view class="fdrow u-p-b-20 u-m-t-20">
<text class="font-28 cor_gray">接单人</text>
</view>
<view class="fdrow u-m-t-20">
<view class="avatar_lst list-column" v-for="(item,index) in info.receivers" :key="index">
<image :src="item.avatar" mode="aspectFill"></image>
<text class="font-28 u-m-t-10 bold">{{item.realname}}</text>
</view>
</view>
</view>
2021-12-02 10:19
z***@126.com (作者)
是运行到小程序,其他的没有试过
2021-12-02 10:22
z***@126.com (作者) - 没有
报错的源头就是这个:v-if="info.receivers.length" 后期尝试。 直接将。 info.receivers.length放在模版里,例如:<view>{{info.receivers.length}}</view> 以及 <view>{{info.receivers[0]}}</view>都会报TypeError的错误, info.receivers确定是个数组。v-for是可以循环出来数据,升级版本之前都没问题,回退版本也是正常的
DCloud_UNI_LXH
请提供完整的示例
2021-12-02 10:43
z***@126.com (作者)
我这边找到可以复现的方式了:定义个对象 如下:
info:{
sub:[]
},
然后在模版中,{{info.sub.length}} 或者{{info.sub[0]}}
2021-12-02 11:29
z***@126.com (作者)
如果直接定一个数组。 sub:[] 这样是没有问题的,这个问题只在最新版出现,返回上一个版本是正常的
2021-12-02 11:30
z***@126.com (作者)
回复 DCloud_UNI_LXH: 我这边找到可以复现的方式了:定义个对象 如下:
info:{
sub:[]
},
然后在模版中,{{info.sub.length}} 或者{{info.sub[0]}}
2021-12-02 17:39
DCloud_UNI_LXH
回复 z***@126.com: 好的,我测试一下
2021-12-02 17:42
DCloud_UNI_LXH
回复 z***@126.com: 在 data 中定义
info:{ arr:[] }
,模板中访问info.arr.length
和info.arr[0]
。编译到微信小程序,没有复现你说的问题2021-12-02 17:52
z***@126.com (作者)
回复 DCloud_UNI_LXH: 明天我提供一下具体的代码吧,我试过好几次,我用的是vue3 的compositionApi
2021-12-02 18:02
z***@126.com (作者)
回复 DCloud_UNI_LXH: 这个问题要看控制器,会提示TypeError
2021-12-02 18:04
DCloud_UNI_LXH
回复 z***@126.com: 请提供完整的示例
2021-12-02 18:44
z***@126.com (作者)
回复 DCloud_UNI_LXH: 这个问题在我另外一台电脑上就是好的,暂时不知道怎么稳定复现,先这样吧,不过我提了另一个bug。也是新版本的,这个是可以复现的,要不帮我看看那个?
2021-12-06 09:28
DCloud_UNI_LXH
回复 z***@126.com: 可以尝试清楚微信开发者工具的缓存试试。令一个问题我会看的
2021-12-06 11:32