vue 数组或对象修改,页面不渲染问题

vue数组对象更新数据,页面渲染问题

vue监听数据变化问题
前提背景:

  • 数组更新数据页面不渲染,
  • 数组更新数据了但是里面的对象也更新数据,操作后页面不渲染

1. 在数组内容在当前页使用不涉及组件
常规操作基本可以解决问题

  1. push()
  2. pop()
  3. shift()
  4. unshift()
  5. splice()
  6. sort()
  7. reverse()

vue不能检测以下变动的数组

当你利用索引直接设置一个项时,例如:Arr[index] = value

解决方法:

// this.$set(数组, 修改项、修改项索引, 值)
// 列如Arr[index] = value
this.$set(Arr, index, value)

2. 当数组中包含对象,且传入子组件,操作更新数据时要注意

let arr = [{b:1,isShow: false}] 

A. 正常修改是没问题的,但是当组件嵌套时点击组件修改isShow时发现内容已修改,但是组件内容不更新;

 // item 为要修改项
 item = Object.assign({}, item, {isShow: true})
 this.$set(Arr, index, item)
 // 或者
 this.Arr.splice(index, 1, item)

B. 整体更新方法

// 背景 this.parameterList = [{b:1,isShow: false},{b:2,isShow: false}] 
let parameterList = []
this.parameterList.forEach((item) => {
    let itemObj = Object.assign({}, item, {
        isShow: true
    })
    parameterList.push(itemObj)
})
this.parameterList = [...parameterList ]

仅个人想法,哪位大佬有更好的办法,还请多多指教。

猜你喜欢

转载自blog.csdn.net/Dwa_ww/article/details/114310115