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 ]
仅个人想法,哪位大佬有更好的办法,还请多多指教。