vue 数组和对象渲染问题

最近项目有点忙碌,遇到好多问题都没有总结(╥﹏╥),在开发过程中,取vuex中的数组渲染完成之后,再次修改数组的值,数据更新了,但是视图并没有更新。以为是数组更新的问题,后来又以为是因为vuex导致的问题. 最后强制刷新组件解决了问题,但是还没有找到根本问题的所在...

数组更新检测

在 vue 中使用数组的push()、pop()、shift()、unshift()、splice()、sort()、reverse() 、filter()、concat() 方法时,改变数组的同时可以触发视图的变化。

注意: 有两种情况 vue 无法检测到变动的数组,分别是:

(1)直接操作数组的长度;

// Vue.set

this.$set(arr, indexOfItem, newValue)

// Array.prototype.splice

this.arr.splice(indexOfItem, 1, newValue)

(2)利用索引直接设置一个项时,例如:this.arr[indexOfItem] = newValue

this.arr.splice(newLength)

demo如下:

{{item.name}}
改变列表的值

export default {

data() {

return {

index: 0,

arr: [{

elements: [{

name: '0'

}, {

name: '1'

}, {

name: '2'

}]

}]

}

},

methods: {

changeArr() {

// 可以改变数组的值

this.arr[0].elements.push({

name: '3'

})

// this.arr[0].elements[1].name = '4' 可以改变数组的值

// this.arr[0].elements[1] = { 无法改变数组的值

// name: '4'

// }

}

}

}

对象更新检测

方法一:this.$set()

方法二:Object.assign()

demo.vue

{{object}}

改变列表的值

export default {

data() {

return {

index: 0,

object: {

name: 'haha'

}

}

},

methods: {

changeArr() {

// 方法一:

this.$set(this.object, 'age', 27)

// 方法二:

this.object = Object.assign({}, this.object, {

age: 27

})

// 方法三: ---不可行

this.object.age = '27'

}

}

}

补充:

this.$forceUpdate()迫使 Vue 实例重新渲染。注意它仅仅影响实例本身和插入插槽内容的子组件,而不是所有子组件。

使用 v-if 在切换时,元素及它的绑定数据和组件都会被销毁并重建

参考文献

vuejs对象更新渲染_vue 数组和对象渲染问题相关推荐

  1. vue 对象里面放数组刷新问题_Vue 数组和对象更新,但是页面没有刷新的解决方式...

    在使用数组的时候,数组内部数据发生改变,但是与数组绑定的页面的数据却没有发生变化. {{item.name}} data () { return { msg: 'Welcome to Your Vue ...

  2. some数组遍历的用法/得到两组数组对象中某属性相同or不同的对象/对比两组数组中, 对象的某个值重复

    很早就知道some方法, 最近需求需要排查两组数组中有相同id的对象和不同id的对象, 实际运用到了some的妙用~ 首先举例我的需求如下(得到id相同和id不同的数据): const aa = [{ ...

  3. js根据对象中属性删除数组中对象

    list.forEach((value,index)=>{if(value.content==content){list.splice(index,1)} })

  4. java vue 服务端渲染_vue ssr服务端渲染小白解惑

    vue ssr服务端渲染小白解惑 >初学ssr入坑 初学vue服务端渲染疑惑非常多,我们大部分前端都是半路出家,上手都是前后端分离,对服务端并不了解,不说java.php语言了,连node服务都 ...

  5. JS 数组转对象 对象转数组 对象数组互相转换

    js 对象数组互相转换 数组转换为对象 JS 数组转对象 对象转数组 对象数组互相转换 数组对象互相转换 JS 数组转对象.对象转数组(针对嵌套深层次比较深的对象或者数组) JS 声明一个函数,arr ...

  6. json vue 对象转数组_vue.js基于v-for实现批量渲染 Json数组对象列表数据示例

    本文实例讲述了vue.js基于v-for实现批量渲染 json数组对象列表数据.分享给大家供大家参考,具体如下: vuejs的出现减轻了对dom的直接操作,同时它提供的 v-for 渲染列表数据也给我 ...

  7. vue更新数组和对象

    vue更新数组和对象 https://cn.vuejs.org/v2/guide/list.html#数组更新检测 更改数组对象 let items=this.formValidate.items; ...

  8. watch深度监听数组_vue watch普通监听和深度监听实例详解(数组和对象)

    vue watch普通监听和深度监听实例详解(数组和对象) 下面通过一段代码给大家介绍vue watch的普通监听和深度监听,具体代码如下所示: var vm=new Vue({ data:{ num ...

  9. Vue更新数组和对象的方法

    1.更新数组中元素值:vue.set(this.对象,下标,新值) 由于 JavaScript 的限制,利用索引直接修改数组元素时,Vue 不能检测数组的变动: 正确的方法: Vue.set(vm.i ...

最新文章

  1. 新冠图像数据分析论文集合(附链接)
  2. 2019.4.1考试2019.4.2考试2019.4.4考试
  3. 操作系统:操作系统知识点总结
  4. JAVA继承类phone_JAVA(9)继承与多态
  5. Python for Data Analysis
  6. 用原生 JS 实现 MVVM 框架2——单向绑定
  7. 【报告分享】致胜直播带货十大法则.pdf(附下载链接)
  8. 5.Knockout.Js(自定义绑定)
  9. 【BERT】小学生级上手教程,从原理到上手全有图示,还能直接在线运行
  10. Java Word文档模板内容替换
  11. 毕业实习笔记——WRF模式入门(Cygwin版)
  12. Android studio 获取MD5和SHA1
  13. typename和class
  14. 百万调音师—音频基础知识
  15. 关于java字符流Reader.read()方法的个人理解
  16. 查看所连接局域网内所有ip
  17. Dreamwave cs6下载
  18. 【互联网及其应用】第2章互联网技术
  19. 武汉大学计算机应用技术考研经验分享,武汉大学计算机应用技术考研
  20. ABP.VNEXT框架系列之一:第一个ABP VNEXT 应用

热门文章

  1. 问题-Delphi编译时提示缺少delphi自己的单元文件
  2. 安卓开发1-质量管理app-技术预演
  3. 计算机课Word自我介绍,第5课 用WORD写篇自我介绍.doc
  4. C语言课后习题(69)
  5. 数据库-MySQL-SQL语句
  6. 申威 linux内核,一种申威防火墙快速移植高版本linux内核的方法与流程
  7. 分布式光伏补贴_2018年国家光伏并网补贴标准、政策
  8. 直播预告:电力行业互联网改革思路与应对方案
  9. 商业银行如何进行分布式数据库选型思考
  10. 化繁为简:数据库运维人员应该知道这些...