vue.forceupdate,vueupdated调用

  vue.forceupdate,vueupdated调用

  本文主要介绍$forceUpdate()在Vue中的使用,有很好的参考价值。希望对你有帮助。如有错误或不足之处,请不吝赐教。

  

目录

  使用$forceUpdate()有两种解决方案。方法一和方法二是关于$ forceupdate的一些理解。

  

$forceUpdate()的使用

  在Vue的官方文档中指出$forceUpdate有强制刷新的功能。

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

  但是,如果数据中的变量是数组或对象,如果我们直接给对象或数组添加属性,页面是不会识别的。

  模板

  p{{userInfo.name}}/p

  Button @click=updateName 修改用户信息/button

  /模板

  脚本

  data(){

  返回{

  UserInfo:{name:晓明 }

  }

  },

  方法:{

  updateName(){

  This.userInfo.name=小红

  }

  }

  /脚本

  在updateName函数中,我们试图修改userInfo对象的值,发现页面实际上并没有改变。

  

有两种解决方法

  

方法一

  方法:{

  updateName(){

  This.userInfo.name=小红//此时,userInfo对象确实被修改了。

  console . log(this . userinfo . name);//输出结果:小红

  这个。$ force update();//这里,强制刷新后,页面的结果变成了‘小红’

  }

  }

  

方法二

  方法:{

  updateName(){

  这个。$set(userInfo ,name,小红);

  }

  }

  

关于$forceUpdate的一些理解

  公文里只有这句话。

  强制Vue实例重新渲染。注意,它只影响实例本身和插入到槽内容中的子组件,而不是所有子组件。

  我的理解是,所谓重渲染只是指重渲染DOM,做与原DOM不同的代码。如果有更改,将它们呈现到页面上。结合官方的解释,可以确认两件事不会发生:

  将不会再次触发生命周期挂钩功能。例如,mounted不会渲染子组件的更新,即使子组件的道具发生了变化。既然如此,什么场景下会需要使用呢?

  我们知道,在Vue中,当响应数据发生变化时,会自动触发更新。但是,有一些条件不会触发更新,例如数组的一些方法,或者在数据中添加没有预先定义的响应数据。

  举个例子:

  假设有一个需要渲染的列表。我们在数据中初始化这个列表,并在挂载的函数中用fill填充这个数组。api填充不会触发自动更新。

  模板

  你好

  差异

  span v-for=(item,index)in arr :key= index { { item } }/span

  /div

  hello-world ref= hello :list= arr /

  /div

  /模板

  脚本

  从“@/components/HelloWorld.vue”导入HelloWorld

  导出默认值{

  名称:“关于”,

  组件:{

  HelloWorld,

  },

  data() {

  返回{

  arr:数组(4),

  };

  },

  已安装(){

  this . arr . fill(0);

  setTimeout(()={

  这个。$ force update();

  }, 3000);

  setTimeout(()={

  这个。$ refs . hello . $ force update();

  }, 5000);

  },

  在上面的例子中,页面将在3秒后看到更新,子组件将在5秒后看到更新。这就解释了forceUpdate的意义。

  也就是说,由于某种原因已经更改并且应该呈现到页面的数据被强制更新。

  他只影响【触发渲染函数生成DOM-diff-用原DOM更新视图】的过程。

  以上个人经历,希望能给大家一个参考,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: