vue强制刷新组件的3种方法

简介: vue强制刷新组件的3种方法

通过组件的key值来刷新

(当某个组件的key变化后,组件都会被重新渲染一遍)

<template>
  <el-table
          :data="data"
          :key="refresh"
        >
        ...
  </el-table>
</template>
 
<script lang="ts">
import { Component, Vue, Watch } from 'vue-property-decorator'
  
@Component({})
export default class extends Vue {
  refresh= true
  
  @Watch('data')
  watchData() {
    this.refresh= !this.refresh
  }
}
</script>

还有通过if来刷新

(当v-if的值发生变化时,组件都会被重新渲染一遍)

<template>
  <el-table
          v-if="refresh"
          :data="data"
        >
        ...
  </el-table>
</template>
<script lang="ts">
import { Component, Vue, Watch } from 'vue-property-decorator'
  
@Component({})
export default class extends Vue {
  refresh = true
  
  // 监视data是否发生变化
  @Watch('data')
  watchData() {
    // 移除组件
        this.refresh = false
        // this.$nextTick可实现在DOM 状态更新后,执行传入的方法。
        this.$nextTick(() => {
          // 重新渲染组件
            this.refresh = true
        })
  }
}
</script>

通过this $forceUpdate强制重新渲染

(如果要在组件内部中进行强制刷新,则可以调用this.$forceUpdate()强制重新渲染组件)

<template>
  <button @click="reflush()">刷新当前组件</button>
</template>
<script lang="ts">
import { Component, Vue } from 'vue-property-decorator'
  
@Component({})
export default class extends Vue {
  reflush() {
      this.$forceUpdate()
  }
}
</script>
相关文章
|
2天前
|
前端开发 JavaScript
Vue底层实现原理总结
Vue底层实现原理总结
|
4天前
|
JavaScript
|
3天前
|
JavaScript
vue知识点
vue知识点
10 3
|
1天前
|
JavaScript 前端开发
Vue躬行记(7)——渲染函数和JSX
Vue躬行记(7)——渲染函数和JSX
|
7天前
|
JavaScript 前端开发 测试技术
使用 Vue CLI 脚手架生成 Vue 项目
通过 Vue CLI 创建 Vue 项目可以极大地提高开发效率。它不仅提供了一整套标准化的项目结构,还集成了常用的开发工具和配置,使得开发者可以专注于业务逻辑的实现,而不需要花费大量时间在项目配置上。
63 7
使用 Vue CLI 脚手架生成 Vue 项目
|
5天前
|
存储 JavaScript API
Vue状态管理深度剖析:Vuex vs Pinia —— 从原理到实践的全面对比
Vue状态管理深度剖析:Vuex vs Pinia —— 从原理到实践的全面对比
13 2
|
8天前
|
JavaScript 算法
“Error: error:0308010C:digital envelope routines::unsupported”启动vue项目遇到一个错误【已解决
“Error: error:0308010C:digital envelope routines::unsupported”启动vue项目遇到一个错误【已解决
11 1
|
8天前
|
JavaScript
error Component name “Login“ should always be multi-word vue/multi-word-component-names【已解决】
error Component name “Login“ should always be multi-word vue/multi-word-component-names【已解决】
20 1
|
10天前
|
JavaScript API
【vue实战项目】通用管理系统:信息列表,信息录入
【vue实战项目】通用管理系统:信息列表,信息录入
17 3
|
10天前
|
JavaScript API
【vue实战项目】通用管理系统:信息列表,信息的编辑和删除
【vue实战项目】通用管理系统:信息列表,信息的编辑和删除
26 2