vue更新数据却不渲染页面解决方案
1.Vue不能检测通过数组索引直接修改一个数组项原因:由于JavaScript的限制,Vue不能检测数组和对象的变化解决办法:this.$set(arr,index,newVal)2.选择功能选中时赋值了,但没渲染页面场景:点击这个没有显示“√”解决办法:checkClick (item) {item.check =! item.check;this.$forceUpdate()},听说循环数据更
·
1.Vue不能检测通过数组索引直接修改一个数组项
原因:由于JavaScript的限制,Vue不能检测数组和对象的变化
解决办法:
this.$set(arr,index,newVal)
2.选择功能选中时赋值了,但没渲染页面
场景:
点击这个没有显示“√”
解决办法:
checkClick (item) {
item.check =! item.check;
this.$forceUpdate()
},
听说循环数据更新的层级太深,导致数据不更新,从而导致视图不更新,用上面可以解决,但我没遇到过这种情况,请查看Vue.js官方
3.路由参数变化时,页面不更新,本质上就是数据没有更新
原因:路由视图组件引用了相同组件时,当路由参数变化时,会导致该组件无法更新。
解决办法:
通过watch监听$route的变化
watch: {
'$route': function() {
}
}
4.在异步更新执行之前操作DOM数据不会变化
原因:Vue在更新DOM时是异步执行。只要侦听到数据变化,Vue将开启一个队列,并缓冲在同一个事件循环中发生的所有数据变更。如果同一个 watcher 被多次触发,只会被推入到队列中一次。这种在缓冲时去除重复数据对于避免不必要的计算和 DOM 操作是非常重要的。然后,在下一个的事件循环“nextTick”中,Vue 刷新队列并执行实际 (已去重的) 工作。
解决办法:
this.$nextTick(function(){ })
5.获取后台返回的数组进行排序处理了,页面内容却不排序
原因:显示的元素不会动
解决办法:
使用v-if先隐藏元素,更新的数组排序处理好了,才显示元素
更多推荐
已为社区贡献3条内容
所有评论(0)