APP开发,List中使用v-for,但uniapp报错TypeError: Invalid attempt to destructure non-iterable instance.

这篇具有很好参考价值的文章主要介绍了APP开发,List中使用v-for,但uniapp报错TypeError: Invalid attempt to destructure non-iterable instance.。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、uniapp报错TypeError: Invalid attempt to destructure non-iterable instance.

在uniapp的APP开发中,我在项目的List组件下引入了card组件,并用循环遍历List,之前的检测一直没有问题,但是后来发在多次进行List的更新后(查询操作后),控制台偶尔会报错TypeError: Invalid attempt to destructure non-iterable instance. In order to be iterable, non-array objects must have a [Symbol.iterator]() method。

APP开发,List中使用v-for,但uniapp报错TypeError: Invalid attempt to destructure non-iterable instance.,前端,uni-app,Powered by 金山文档

我同样在网络上找了好多解决方法,大多在说是因为v-for的组件或对象中存在空值,要检查rowsItem的属性。对比后端返回的数据,我的问题似乎不在这里。

我用debugger模式又检查了编译后页面上都丢失掉了那些东西,我的问题是部分card会丢失整个title插槽和default插槽中部分内容。但不是所有的list-item都会丢失。只有中间的部分。这个时候我发现一个地方:

<!-- uni-list v-for 开头-->
<view v-for="(record,index) in rechargedata.rows" :key="record.id">

我这里用的是record.id做v-for的key,record包含的数据还是蛮多的,进而我想到会不会是错过了,当前的id对应的东西还没有找到,就去了下一个。反正已经改了好久了,试一下呗。

<!-- uni-list v-for 开头-->
<view v-for="(record,index) in rechargedata.rows" :key="index">

我把 :key="record.id"改成 :key="index",用v-for自动赋予的索引值做key。很神奇,测试后一切正常了。虽然问题解决了,但具体原因我现在也没搞清楚。希望有大佬可以帮忙解惑。难道真的是key的问题?后面的把前面的覆盖了,然后前面的还没渲染完??

TypeError: Invalid attempt to destructure non-iterable instance. In order to be iterable, non-array objects must have a [Symbol.iterator]() method

这个问题,我的解决方式是把v-for中的key改成index不要用item中的属性做key.

二、数据响应缓慢的问题

在修改上一个个bug时,我发现某些事件上发生后,数据的渲染和更新响应比较慢,经过我不断检查,发现是因为绑定在list-item上的事件我传递了整个record,看下面actionsEdit(record)方法。

<!-- uni-list v-for 开头-->
<view v-for="(record,index) in rechargedata.rows" :key="record.id">
<!-- uni-list-item 中的一个事件 -->
<view class="card-actions-item" hover-class="card-actions-hover" 
@click="actionsEdit(record)">

我在actionsEdit方法中只使用了Id一个属性,但整个record包含的数据还是蛮多的。毕竟移动端不是PC,没那么强的算力,于是我就在想会不会是因为传递的数据太多了,导致渲染变慢的原因。于是我将record改为仅传递record.id。测试后,确实在执行和渲染速度上都快了很多。

除此之外,页面和页面,组件中绑定的事件需要的参数,对于参数尽可能的要什么给什么,这个在App端真的很影响渲染速度,如果真的需要List集合中某一个子属性的全部,传list的Key吧,然后再用list[index]的对象去取。文章来源地址https://www.toymoban.com/news/detail-622478.html

到了这里,关于APP开发,List中使用v-for,但uniapp报错TypeError: Invalid attempt to destructure non-iterable instance.的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp中UView中 u-form表单在v-for循环下如何进行表单校验

    1、数据data格式 注:rule绑定的tableFromRule中要和表单tableFrom下面放置一个同名数组,确保u-form能找到 2、dom结构 3、u-form-item格式必须用 :prop=“ tableData.${index}.localation ” 4、修改源码 找到async validateField(value, callback, event = null)函数进行替换 5、替换如下 6、在tableData每次塞数据的

    2024年02月09日
    浏览(82)
  • vue - 动态绑定ref(使用变量)以及获取方式,解决v-for循环嵌套自定义子组件时无法this.$refs.xx找到动态组件的情况(详细示例教程)适合 vue.js nuxt.js uniapp

    正常情况,我们需要在vue中获得某个dom或者组件,我们会通过绑定 ref 然后通过绑定后的名字来获取这个dom 。 但是,如果我们在v-for中绑定ref的话,那么这个ref就会存在多个,比如我们点击事件让对应的显示/隐藏的话,我们很难找到这个对应的元素。 那么,这时我们需要动

    2024年02月13日
    浏览(53)
  • uni-app 运行到app 报错 TypeError

    运行到手机、模拟器报错: TypeError: r[t] is not a function. (In ‘rt’, ‘r[t]’ is undefined)[ERROR] : TypeError: r[t] is not a function. (In ‘rt’, ‘r[t]’ is undefined)[ERROR] : TypeError: undefined is not an object (evaluating ‘r.addVData’)[ERROR] 解决办法: 更新hbuilderX,但是我之前的HX的版本是3.1.x的, 更新后

    2024年01月24日
    浏览(70)
  • 解决 Uncaught (in promise) TypeError: list is not iterable 报错

    最近在项目中遇到 Uncaught (in promise) TypeError: list is not iterable 报错,虽然不影响代码运行,但是看着报错感觉有点难受,试试能不能解决它 看了很多篇文章,都是说使用 Object.keys() 可以解决问题 就先使用 Object.keys() 看看,代码运行之后 因为 Object.keys() 传入的是 null 和 undefin

    2024年02月11日
    浏览(53)
  • 解决 uniapp报错:TypeError: WebSocket is not a constructor

    这个错误让我的页面显示不出来, 白屏 ,错误信息如下: 首先要确认mqtt版本,我之前是4.+,后来改成3.0.0解决一部分问题 白屏是因为要条件编译,app端是“wx://”,h5端是\\\"ws://“” 这样白屏解决,但是 app端一直连接不上 ,可能是clientId的问题,我改了之后就完美接收到信息

    2024年02月16日
    浏览(70)
  • Vue中v-for的9种使用案例

            以下代码的意思是:循环渲染一个包含三个元素的列表,每个元素的值分别为“第一项”、“第二项”和“第三项”。         以下代码的意思是:循环渲染一个包含三个属性的对象,每个属性的键值对分别为“name: 张三”、“age: 18”和“gender: 男”。    

    2024年02月03日
    浏览(39)
  • Vue-16、Vue列表渲染(v-for的使用)

    1、vue遍历数组 也可以这样写 2、遍历对象

    2024年01月21日
    浏览(47)
  • 使用v-for循环遍历element-ui的表格

    由于页面设计的功能要求,所以,页面的表格头以及表格的数据都是由后端返回来的,所以我们通过axios获取接口的数据后,通过v-for循环遍历表格的全部数据 HTML的代码如下: js的代码如下,我是使用的vue 通过axios获取接口数据的这里就不写了 直接放页面的效果 tableTitleLis

    2024年02月11日
    浏览(48)
  • 使用uniapp开发国际化---app,vue,nvue

    hello-i18n 示例工程 - DCloud 插件市场  en.json----\\\"自定义key\\\":\\\"英文\\\"  zh-Hans.json----\\\"自定义key\\\":\\\"中文\\\"      注意:json文件中的名称需要中英文对应。 index.js vue页面模板使用---- $t(\\\'\\\') nvue页面模板使用---- t(\\\'\\\') pages.json 使用 ---- %index.title% data中使用--- this.$t(\\\'\\\') 启动项目,就可以成功切

    2024年02月06日
    浏览(45)
  • Stable Diffusion 运行报错 TypeError: unsupported operand type(s) for |: ‘type‘ and ‘type‘

    MacOS 上使用 python 3.8 版本安装运行 Stable Diffusion 时,有如下报错 这是因为之前老版本的 python 3.8 的兼容问题。 解决办法: 1. 方法一:升级 python 版本至 3.9+ 2. 方法二:在 `lora.py` 文件中增加代码:from __future__ import annotations: Problem solved~

    2024年02月11日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包