vue中的$forceupdate()怎么使用-亚博电竞手机版

vue中的$forceupdate()怎么使用

这篇文章主要讲解了“vue中的$forceupdate()怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue中的$forceupdate()怎么使用”吧!

    $forceupdate()的使用

    在vue官方文档中指出,$forceupdate具有强制刷新的作用。

    那在vue框架中,如果data中有一个变量:age,修改他,页面会自动更新。

    但如果data中的变量为数组或对象,我们直接去给某个对象或数组添加属性,页面是识别不到的

    在updatename函数中,我们尝试给userinfo对象修改值,发现页面其实并没有变化

    有两种解决方法

    方法一

    methods:{updatename(){this.userinfo.name='小红'//在此时,确实已经将userinfo对象修改完成console.log(this.userinfo.name);//输出结果:小红this.$forceupdate();//在这里,强制刷新之后,页面的结果变为'小红'}}

    方法二

    methods:{updatename(){this.$set('userinfo',name,'小红');}}

    关于$forceupdate的一些理解

    在官方文档上仅仅有这一句话

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

    我的理解是,所谓重新渲染,仅仅是指重新渲染dom并与原有的dom做code diff。对于有变更的,渲染到页面。结合官方解释,可以确认有两点不会发生:

    • 不会重新触发生命周期钩子函数,比如mounted

    • 不会渲染子组件的更新,即使子组件的props发生改变了。

    既然如此,什么场景下会需要使用呢?

    我们知道,在vue中,响应数据发生改变后,会自动触发更新,但有一些条件,不会触发更新,比如数组的一些方法,或者添加data中并未提前定义的响应式数据。

    举个例子:

    假设有一个列表需要渲染,我们在data中初始化了这个列表,并在mounted函数中通过fill去填充这个数组。fill这个api是不会触发自动更新的。

    网站地图