j***@163.com
j***@163.com
  • 发布:2023-06-26 15:15
  • 更新:2023-09-09 15:23
  • 阅读:459

【报Bug】uniapp编译成钉钉小程序之后报Cannot read properties of null (reading 'index')

分类:uni-app

产品分类: uniapp/小程序

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: 12.0.1 (21A559)

HBuilderX类型: 正式

HBuilderX版本号: 3.5.3

第三方开发者工具版本号: 3.6.4

基础库版本号: 1.25.7

项目创建方式: HBuilderX

操作步骤:
代码片段  
Page({  
  data: {  
    array12: Array.from({ length: 12 }),   
  }  
})  
代码片段  
   <view  
              a:for="{{array12}}"  
              a:for-index="index"  
              a:for-item="item"  
              class="{{((('u-loading-icon__dot')+' '+'data-v-8ae91632')+' '+virtualHostClass)}}"  
              style="{{virtualHostStyle}}"  
              a:key="index" //这里存在问题  
            >  
            </view>

预期结果:
代码片段  
   <view  
              a:for="{{array12}}"  
              a:for-index="index"  
              a:for-item="item"  
              class="{{((('u-loading-icon__dot')+' '+'data-v-8ae91632')+' '+virtualHostClass)}}"  
              style="{{virtualHostStyle}}"  
              key="{{index}}" //或者其他更好的办法  
            >  
            </view>

实际结果:
代码片段  
   <view  
              a:for="{{array12}}"  
              a:for-index="index"  
              a:for-item="item"  
              class="{{((('u-loading-icon__dot')+' '+'data-v-8ae91632')+' '+virtualHostClass)}}"  
              style="{{virtualHostStyle}}"  
              a:key="index" //这里存在问题  
            >  
            </view>

bug描述:

问题描述

通过uniapp编译成钉钉小程序之后,在支付宝ide里面切换到钉钉小程序预览,会报错af-appx.worker.min.js:26 Cannot read properties of null (reading 'index')
Please check your component:
in /node-modules/uview-ui/components/u-loading-icon/u-loading-icon

排查

发现这个组件里面用了Array.from({ length: 12 })来渲染数组,view上绑定了a:key="index"的写法,看了钉钉小程序开发文档介绍https://open.dingtalk.com/document/orgapp/list-rendering#title-ips-etx-0yr
我理解是a:index="index"代表的是列表项的属性index,而非索引;Array.from({ length: 12 })的列表项为undefined,故而undefined.index会报错,而支付宝小程序和微信小程序是一样的写法但是没有这个报错,猜测对此做了兼容?

代码片段  
data: {  
    array12: Array.from({ length: 12 }),   
}
代码片段  
   <view  
              a:for="{{array12}}"  
              a:for-index="index"  
              a:for-item="item"  
              class="{{((('u-loading-icon__dot')+' '+'data-v-8ae91632')+' '+virtualHostClass)}}"  
              style="{{virtualHostStyle}}"  
              a:key="index"  
            >  
            </view>
2023-06-26 15:15 负责人:无 分享
已邀请:
2***@qq.com

2***@qq.com

这是uview的BUG,应该报给uview。改用uni-load-more,可解决。

要回复问题请先登录注册