z***@126.com
z***@126.com
  • 发布:2021-12-01 14:34
  • 更新:2021-12-02 10:20
  • 阅读:346

【报Bug】Alpha3.3.0 view中。对一个数组计算length或者数组加上[0] 报错

分类:uni-app

产品分类: 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]}}

2021-12-01 14:34 负责人:无 分享
已邀请:
z***@126.com

z***@126.com (作者) - 没有

之前的版本都没有问题,这个报错之后。 基本上判断数组为空的方式都不能用length判断了

DCloud_UNI_LXH

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

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.lengthinfo.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

该问题目前已经被锁定, 无法添加新回复