Vue 刷新组件

参考

强制 Vue 组件重新渲染的方法(一) - 掘金 (juejin.cn)

强制 Vue 组件重新渲染的方法(二) - 掘金 (juejin.cn)

环境搭建

创建组件model_a,模拟要刷新的组件,每当重新加载时,都会在控制台输出提示

xml 复制代码
<script setup>
import { onMounted } from 'vue'
onMounted(()=>{
  console.log("加载组件")
})
</script>

<template>
  <div>
    this is a
  </div>
</template>

<style scoped>
</style>

每当点击按钮时,都会去刷新组件

xml 复制代码
<script setup>
import { ref,nextTick } from 'vue'
import model_a from "./model_a.vue"
</script>

<template>
  <model_a></model_a>
  <button style="border: 1px solid #ccc;" @click="refresh">
      refresh
    </button>
</template>

<style scoped>
</style>

演示

v-if

点击按钮后,flag的值会依次变为flase、true

重点是要等待dom操作结束后,再去更新flag状态由flase转化为true

多次点击后,也会对应的多次刷新组件页面

xml 复制代码
<script setup>
import { ref,nextTick } from 'vue'
import model_a from "./model_a.vue"

let flag = ref(true)
async function refresh(){
  flag.value = false
  await  nextTick()
  flag.value = true
}

</script>

<template>

  <model_a v-if="flag"></model_a>

  <button style="border: 1px solid #ccc;" @click="refresh">
      refresh
    </button>
</template>

<style scoped>
</style>

key

每次点击按钮后,对应的key会依次加1,此时组件由于Key值变化会重新加载

xml 复制代码
<script setup>
import { ref } from 'vue'
import model_a from "./model_a.vue"

const flag = ref(1)
async function refresh(){
  flag.value += 1
  console.log(flag.value)
}

</script>

<template>

  <model_a :key="flag"></model_a>

  <button style="border: 1px solid #ccc;" @click="refresh">
      refresh
    </button>
</template>

<style scoped>
</style>
相关推荐
Σίσυφος19001 小时前
halcon 条形码、二维码识别、opencv识别
前端·数据库
学代码的小前端1 小时前
0基础学前端-----CSS DAY13
前端·css
css趣多多3 小时前
案例自定义tabBar
前端
姑苏洛言4 小时前
DeepSeek写微信转盘小程序需求文档,这不比产品经理强?
前端
林的快手4 小时前
CSS列表属性
前端·javascript·css·ajax·firefox·html5·safari
匹马夕阳5 小时前
ECharts极简入门
前端·信息可视化·echarts
API_technology5 小时前
电商API安全防护:JWT令牌与XSS防御实战
前端·安全·xss
yqcoder5 小时前
Express + MongoDB 实现在筛选时间段中用户名的模糊查询
java·前端·javascript
十八朵郁金香5 小时前
通俗易懂的DOM1级标准介绍
开发语言·前端·javascript
m0_528723816 小时前
HTML中,title和h1标签的区别是什么?
前端·html