vue--$nexttick,$set,$forceupdate--更新视图的区别

$nexttick

$nexttick并不是真正意义上的更新视图,而是等视图更新后再执行某些操作

其实它只是让你的操作在视图更新后才执行而已

$set()

可以用于对象或者数组

1.对于数组

this.$set(Array, index, newValue)

Array:要更改的数据源
index:要更改的具体数据下标
value :重新赋的值

2.对于对象

this.$set(Object, key, value)

Object:要更改的数据源
key:要更改的具体数据
value :重新赋的值

$forceupdate

迫使 Vue 实例重新渲染。注意它仅仅影响实例本身和插入插槽内容的子组件,而不是所有子组件。
$forceUpdate的原理很简单,即使强制触发update声明周期,重新渲染下dom:

Vue.prototype.$forceUpdate = function () {
    const vm: Component = this
    if (vm._watcher) {
        vm._watcher.update()
    }
}

总结

  1. $nexttick并不是真正意义上的更新视图,而是等视图更新后再执行某些操作
  2. 虽然 $ forceUpdate和 $ set都能起到更新视图的效果,但是前者并不推荐使用,一是,官方都说了,如果你都到了要用 $ forceupdate的地步了,那你十有八九是操作有问题;二是能用 $ set解决的问题,为什么要用$forceupdate这种更消耗性能的方法呢,如果用了,估计是你偷懒!

你可能感兴趣的:(vue.js,javascript,前端)