首先说下在什么情况下会出现这种情况以及解决方案

vue2中数组下标修改值时或者新增对象Key值时 这样vue的devsrve函数是监听不到数据的变化的所以就会导致数据更新视图未更新

1.数组利用下标修改值 (错误示范)

   new Vue({el: "#app",data: {arr: ["列表1", '列表2'],newObj: { a: "123" }},methods: {upDateData() {this.arr[0] = "列表0" // !错误的 这样是不响应的}}})

解决方案:

    ① 可以利用this.$set()  

参数一:目标数据

参数二:目标数据的下标或者key值

参数三:所赋予的值

   new Vue({el: "#app",data: {arr: ["列表1", '列表2'],newObj: { a: "123" }},methods: {upDateData() {this.$set(this.arr, 0, "列表0")}}})

    ② 可以利用vue对数组重写的splice方法

    new Vue({el: "#app",data: {arr: ["列表1", '列表2'],newObj: { a: "123" }},methods: {upDateData() {this.arr.splice(0, 1, "列表0")}}})

   ③  重新声明一个变量深拷贝一下当前这个数组然后重新赋值即可

   new Vue({el: "#app",data: {arr: ["列表1", '列表2'],newObj: { a: "123" }},methods: {upDateData() {let newArr = JSON.parse(JSON.stringify(this.arr))newArr[0] = "列表0"this.arr = newArr}}})

2.对象新增key值时 (错误示范)

new Vue({el: "#app",data: {arr: ["列表1", '列表2'],newObj: { a: "123" }},methods: {upDateData() {this.newObj.b="456" //!这样给对象新加key值得方式是不响应的}}})

解决方案

   ①  利用this.$set()

    new Vue({el: "#app",data: {arr: ["列表1", '列表2'],newObj: { a: "123" }},methods: {upDateData() {this.$set(this.newObj, "b", "456")}}})

   ②  重新声明一个变量深拷贝一下当前这个数组然后重新赋值即可

    new Vue({el: "#app",data: {arr: ["列表1", '列表2'],newObj: { a: "123" }},methods: {upDateData() {let copyObj = JSON.parse(JSON.stringify(this.newObj))copyObj.b = "456"this.newObj = copyObj}}})

可以利用Object.assign()方法

    new Vue({el: "#app",data: {arr: ["列表1", '列表2'],newObj: { a: "123" }},methods: {upDateData() {this.newObj = Object.assign({}, this.newObj, { b: "456" })}}})

Vue数据改变视图不更新的问题相关推荐

  1. vue 数组数据改变 视图不更新解决方案

    原数据 editFormData: {column_info_list: [ {'code': '','title': '','operate_type': 'openWeb','more_info' ...

  2. vue数据改变了,视图不更新不刷新问题

    vue数据改变了,视图不更新不刷新问题 描述:在对象中添加一个属性 seen,初始想法使用for循环添加 seen 属性,然后改变这个属性去更新视图,然后发现不行. 解决,使用$set: this.$ ...

  3. vue 修改对象的值视图没有发生改变_在vue中处理对象属性改变视图不更新问题? - echart...

    ...图等等,但是这些代码比较难写,因此我们通常会用借助echarts,那你知道如何使用echarts吗?这篇文章就和大家讲讲echarts的使用方法,有一定的参考价值,感兴趣的朋友可以看看.以饼状图 ...

  4. 解决vue中对象属性改变视图不更新的问题

    解决vue中对象属性改变视图不更新的问题 参考文章: (1)解决vue中对象属性改变视图不更新的问题 (2)https://www.cnblogs.com/buxiugangzi/p/12050165 ...

  5. vue 数据改变页面没有实时渲染(不是一般的情况, 如果一般情况无法解决可能是这个原因)

    css3里面的渐变色属性 background-image: linear-gradient(121deg, rgba(36, 237, 255, 1) 0%, rgba(24, 102, 231, ...

  6. vue数据改变渲染问题_解决Vue中页面成功渲染数据undefined的问题

    前言 这个标题不太好取. 本文需要下面的知识:https://zhuanlan.zhihu.com/p/260811233​zhuanlan.zhihu.com 问题描述 我最近的一个功能需求是通过a ...

  7. vue 数组删除 dome没更新_详解Vue响应式原理

    摘要: 搞懂Vue响应式原理! 作者:浪里行舟 原文:深入浅出Vue响应式原理 Fundebug经授权转载,版权归原作者所有. 前言 Vue 最独特的特性之一,是其非侵入性的响应式系统.数据模型仅仅是 ...

  8. safair中vue修改了数据,但是视图没有更新解决方案

    使用vuex,也适用了splice来改数据, 修改了评论的数据,但是视图没有更新. state.tabContainer.splice(index, 1, {info: info}); 查看dom元素 ...

  9. Vue中的Diff算法 patch函数-简单Diff算法-双端Diff算法-快速Diff算法-当数据发生改变,视图如何更新?

    文章目录 Vue中的Diff算法 概述 前置知识 patch方法 简单Diff算法 总结 双端Diff算法 --vue2 快速Diff算法 --vue3 vue2和vue3 Diff算法的区别 当数据 ...

最新文章

  1. 一道Python面试题,据说大部分人都中招了,纷纷开始怀疑自己
  2. 大数据项目开发案例_大数据分析技术——项目案例2(房价数据分析上)
  3. python开发工程师面试题-2019超实用Python开发工程师面试题分享
  4. 闭包函数 装饰器 迭代器
  5. jvm一个线程的成本
  6. NetApp 7MTT 工具进行存储数据的迁移
  7. 转载.Android HAL实现的三种方式(1) - 基于JNI的简单HAL设计
  8. hdu 2444(二分图的判断以及求最大匹配)
  9. collections系列
  10. 安装uwsgi报错:error linking uWSGI解决方法
  11. 查看提交历史(git log)
  12. 关于serv-u公网访问出现“打开ftp服务器上的文件夹时发生错误。请检查是否有权限访问该文件夹。详细信息:操作超时”的解决方法...
  13. 太原警方通过微博提醒您手机丢失如何保微信安全
  14. AD16修改规则加宽电源线与地线
  15. C#毕业设计——基于C#+asp.net+SQL server的客户关系管理系统设计与实现(毕业论文+程序源码)——客户关系管理系统
  16. ZT - 谷歌微软等三巨头掀电视革命:智能电视年底成真
  17. Android kotilin 滴+震动提示
  18. 移动端h5网页调用支付宝支付接口
  19. KS值和GINI系数
  20. PostMessage,SendMessage,GetMessage,PeekMessage,TranslateMessage,DispatchMessage的用法集合

热门文章

  1. 2021SC@SDUSC sm2算法原理(2)
  2. 内容产业 BAT均已到齐,大家各有什么后手?
  3. ES6 箭头函数大起底:熟知这几个特点让你少踩很多坑
  4. mysql 插入中文数据显示 ? 号解决办法
  5. 数据库复试--关系数据理论(主观题)
  6. [掌握一个小项目]简单利用Java实现可输入计算器
  7. 05 My Batis 复杂映射
  8. 前端两种常用的定时器
  9. Vue 路由跳转的时候没有反应
  10. 【数据分析思维】逻辑树分析(费米估算)