Vue遇到的问题记录

【数据操作】

一、v-for

1、vue报错Duplicate keys detected ''. This may cause an update error

1.1 问题原因

        使用v-for的时候,出现了重复的key,导致控制台报错,但控件能正常渲染。

1.2 解决办法

        检查key是否存在重复,引号内则为重复的key,修改key为唯一值即可。

2、在v-for循环里面修改数据无效,值不会更改

1.1 问题描述

        在循环里面传入index修改该角标下的数组元素,修改无效;传入子元素,修改也无效,只在方法体里面局部有效;如下:

doCheckOne(index, item) {
  item.isChecked = !item.isChecked;
  this.messageList[index].isChecked = false;
},
1.2 问题原因

        Vue 不允许在已经创建的实例上动态添加新的根级响应式属性 (root-level reactive property)。然而它可以使用 Vue.set(object, key, value) 方法将响应属性添加到嵌套的对象上。

1.3 解决办法

        使用this.$set来操作更新数组中的元素。

Vue中this.$set的用法 // 数组:第一个参数是要修改的数组, 第二个值是修改的下标或字段,第三个是要修改成什么值 // 对象:第一个参数是要修改的对象, 第二个值是修改属性字段,第三个是要修改成什么值 Vue.set(target, propertyName/index, value)
doCheckOne(index, item) {
  item.isChecked = !item.isChecked;
  this.$set(this.messageList, index, item);
},

【Vue-Router】

一、传值问题

1、使用params传值,用this.$route.params无法取到值

1.1 问题描述

        使用params传值,用this.$route.params无法取到值

1.2 解决办法

        params需要与name一起使用,this.$router.push({ name: '', path: '', params: {}})

【Vant - 移动端框架】

一、折叠面板van-collapse

1、使用折叠面板van-collapse,手风琴模式,change事件后,接收到的activeNames参数为上一个点击的值

1.1 问题描述

       一个item项要点击两次才是最新的值

 将activeNames参数传入后,获取到的值与上次点击的值一致,并非最新的;

仔细看了下vant文档,原来change事件自带传入activeNames参数,不需要自己传入,自己传入为回调后的结果;直接将参数去掉,change方法取到的参数即为最新值

像下面有括号也不行哦,vue认为这是无参:

 1.2 解决办法

 

二、vant文件上传

1、后台报错:Content type 'multipart/form-data;boundary=----      WebKitFormBoundarymn2IDPynGhlHwALI;charset=UTF-8' not supported;

1.1 解决办法

        去掉:@RequestBody

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue Devtools 是 Vue.js 官方提供的一个调试工具,用于在开发过程中对 Vue.js 应用进行调试和监测。当遇到内存泄露问题时,可以通过以下步骤使用 Vue Devtools 进行排查: 1. 确保 Vue Devtools 安装和启动:在浏览器安装 Vue Devtools 插件,然后在项目中确保已正确引入 Vue Devtools 的开发版。 2. 打开 Vue Devtools:在浏览器开发者工具中,切换到 Vue 选项卡,确保 Vue Devtools 已打开。 3. 观察组件状态和生命周期:在 Vue Devtools 中,可以查看当前所有渲染的组件实例。观察组件的状态和生命周期,查看是否存在异常。 4. 检查内存占用情况:在 Vue Devtools 的性能面板中,可以查看当前应用的内存占用。如果内存占用不断增长,可能存在内存泄露问题。 5. 分析垃圾回收:在 Vue Devtools 的性能面板中,可以查看垃圾回收的情况。如果发现垃圾回收频率较低,可能意味着存在内存泄露。 6. 使用快照:在 Vue Devtools 的快照面板中,可以记录当前应用的状态,并随时保存和比对快照。通过比对快照,可以找出内存泄露的具体变化。 7. 分析组件树:在 Vue Devtools 的组件树面板中,可以查看整个组件树的结构。通过观察组件树的变化,找出可能导致内存泄露的组件。 8. 排查事件监听:使用 Vue Devtools 的事件监听面板,检查是否存在未正确注销的事件监听器。未移除的事件监听器可能导致组件无法被销毁,从而引发内存泄露。 9. 使用 Heap Snapshot:如果通过以上方法仍无法确定内存泄露的原因,可以使用 Heap Snapshot 功能。Heap Snapshot 可以在内存占用高峰时,记录当前内存中的对象实例,从而帮助进一步分析内存泄露的源头。 通过以上步骤,可以使用 Vue Devtools 进行内存泄露问题的排查和分析,找到导致内存泄露的原因,并进行相应的优化处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一茗道人nview

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值