广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue中$forceUpdate()的使用方式
  • 667
分享到

Vue中$forceUpdate()的使用方式

2024-04-02 19:04:59 667人浏览 薄情痞子
摘要

目录$forceUpdate()的使用有两种解决方法 方法一方法二关于$forceUpdate的一些理解$forceUpdate()的使用 在Vue官方文档中指出

$forceUpdate()的使用

Vue官方文档中指出,$forceUpdate具有强制刷新的作用。

$forceUpdate()

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

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

<template>
  <p>{{userInfo.name}}</p>
  <button @click="updateName">修改userInfo</button>
</template>
<script>
  data(){
    return{
      userInfo:{name:'小明'}
    }
  },
  methods:{
    updateName(){
      this.userInfo.name='小红'
    }
  }
</script>

在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是不会触发自动更新的。

<template>
  <div class="hello">
    <div>
      <span v-for="(item, index) in arr" :key="index">{{ item }}</span>
    </div>
    <hello-world ref="hello" :list="arr" />
  </div>
</template>
<script>
import HelloWorld from "@/components/HelloWorld.vue";
export default {
  name: "About",
  components: {
    HelloWorld,
  },
  data() {
    return {
      arr: Array(4),
    };
  },
  mounted() {
    this.arr.fill(0);
    setTimeout(() => {
      this.$forceUpdate();
    }, 3000);
    setTimeout(() => {
      this.$refs.hello.$forceUpdate();;
    }, 5000);
  },

在上面的示例中,页面会在3秒后才看到更新,子组件会在5秒后看到更新。这也就解释了forceUpdate的含义。

即强制更新因某些原因并未渲染到页面的,已经改变的,应该被渲染到页面的数据。

他所影响的仅仅是【触发render函数生成DOM -> 与原DOM 进行diff -> 更新视图】这个过程。 

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。 

--结束END--

本文标题: Vue中$forceUpdate()的使用方式

本文链接: https://www.lsjlt.com/news/144918.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue中$forceUpdate()的使用方式
    目录$forceUpdate()的使用有两种解决方法 方法一方法二关于$forceUpdate的一些理解$forceUpdate()的使用 在Vue官方文档中指出...
    99+
    2022-11-13
  • Vue中的$forceUpdate()怎么使用
    这篇文章主要讲解了“Vue中的$forceUpdate()怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue中的$forceUpdate()怎么使用”吧!$forceUp...
    99+
    2023-06-29
  • vue中 $forceUpdate的使用解析
    目录方案分析forceUpdate本质实现原理分析刷新页面使用v-if标记key-changing在vue的开发过程中,数据的绑定通常来说都不用我们操心,例如在​​data...
    99+
    2022-11-13
  • react中的forceupdate怎么用
    本文小编为大家详细介绍“react中的forceupdate怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“react中的forceupdate怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深...
    99+
    2022-10-19
  • Vue中的.vue文件的使用方式
    目录定义.vue文件引用.vue文件使用render函数什么是.vue文件,它的作用是什么需要安装vue-loader npm i vue-loader vue-template-c...
    99+
    2022-11-13
  • vue中this.$parent的使用方式
    目录vue组件this.$parent一、在实例中二、在组件中调用组件vue子组件this.$parent调用父组件方法报错TypeError:this.parent.xxx is ...
    99+
    2022-11-13
  • Vue中使用eslint和editorconfig方式
    目录使用eslint和editorconfig方式使用eslint的好处安装eslint文件配置说明启动命令配置自动检查语法配置添加editorconfigvue editorcon...
    99+
    2022-11-13
  • dataV大屏在vue中的使用方式
    目录前言一、dataV可以实现什么效果?二、使用步骤1.安装依赖2.引入3.使用三、效果前言 随着信息化的发展,大屏展示的需求越来越多,使用e-charts一个一个的做配置太麻烦,于...
    99+
    2022-11-13
  • setTimeout在vue中的正确使用方式
    目录setTimeout在vue中的正确使用遇到了1个坑问题出在我的格式上面解决vue在setTimeout内修改this失效使用箭头函数总结setTimeout在vue中的正确使用...
    99+
    2023-01-28
    vue使用setTimeout vue setTimeout setTimeout在vue使用
  • vue之moment的使用方式
    目录前言一、moment是什么?二、使用步骤(例:默认查询时间24小时之前~当前时间)三、日期格式 四、new Date() 相关前言 在日常开发中,我们常常会遇到以下几种...
    99+
    2022-11-13
  • vue中使用mockjs配置和使用方式
    目录mockjs配置和使用方式需求步骤mock使用及mock无侵入的解决什么是mock?为什么要用到mock?如何使用mock?mock无侵入式配置mockjs配置和使用方式 需求 ...
    99+
    2022-11-13
  • vue中常用的缩写方式
    目录vue常用缩写绑定数据 v-bind监听事件 v-onvue的简写vue常用缩写 绑定数据 v-bind v-bind 的缩写是 : 可以使用 setAttribute 设置 ,...
    99+
    2022-11-13
  • vue中的公共方法调用方式
    目录vue公共方法调用(1)如果是全局(多页面)使用(2)如果是单页面使用vue如何封装和调用公共方法封装公共方法调用公共方法vue公共方法调用 首先,在assets文件夹下,新建j...
    99+
    2022-11-13
  • Vue中使用定时器的方式有哪些
    本篇内容主要讲解“Vue中使用定时器的方式有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue中使用定时器的方式有哪些”吧!js中定时器有两种,一个是循环执行 setInterval,另一...
    99+
    2023-07-05
  • vue中使用mixins/extends传入参数的方式
    目录使用mixins/extends传入参数vue mixins的原理使用mixins/extends传入参数 最近做报表页面,基本都是列表页面,所以想用mixins。 但是接口的u...
    99+
    2022-11-13
  • Vue中使用 class 类样式的方法详情
    目录1. 布尔值2.表达式3.多类封装4.可以直接在 v-bind:中使用数组形式使用class类在vue中为我们提供了 几种方式来使用class类的样式 1. 布尔值 我们先正常在...
    99+
    2022-11-12
  • vue-cli的index.html中使用环境变量方式
    目录vue-cli的index.html使用环境变量vue-cli在index.html判断环境变量加载不同代码vue-cli的index.html使用环境变量 项目中使用了公司定义...
    99+
    2022-11-13
    vue-cli环境变量 vue-cli index.html 使用环境变量
  • vue中使用Axios最佳实践方式
    目录1.前言2.使用2.1安装2.2基本用例2.2.1 get请求2.2.2post请求3.配置3.1语法3.2别名4.Axios实例4.1语法4.2请求配置4.3响应的配置配置的优...
    99+
    2022-11-13
  • vue组件中props与data的结合使用方式
    目录组件中props与data的结合使用子组件中data从props中动态更新数据组件中props与data的结合使用 如前所述(vue组件属性(props)及私有数据data),v...
    99+
    2022-11-13
    vue组件 vue中props vue中data
  • vue3中keep-alive和vue-router的结合使用方式
    目录前言代码一、为何要使用keep-alive?二、vue2中使用keep-alive三、vue3中使用keep-alive四、keep-alive属性“include,...
    99+
    2022-11-13
    vue3中keep-alive vue3中vue-router keep-alive和vue-router使用
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作