Vue3 重新渲染单一组件

Vue3 重新渲染单一组件

·

1 min read

最近有一个需求需要对一个 Modal 弹窗的子组件进行重新渲染。

解决办法就是每次更新 :key 的值来实现组件更新

回顾

首先我们来回顾一下 :key 的作用:

v-for 中每一个节点都必须添加:key ,而这个 :key 是一个特殊属性,用来标识节点的唯一性。

在 Vue2 中,:key 主要用于 Vue 的虚拟 DOM 算法中的优化策略。当使用 v-for 渲染列表时,算法会根据 :key 的值去对比新旧节点,然后对 DOM 进行更新。由于使用了这一优化策略,使 Vue 可以有效地避免 DOM 回流和重绘,提高了渲染性能、避免出现错误的数据更新。

在 Vue3 中,:key 的作用与 Vue2 不同,它主要用于跟踪节点的身份。在 v-for 指令渲染列表时,Vue 会根据 :key 的值来判断哪些节点是新增的、哪些节点是删除的,然后对 DOM 进行更新。

实战

这里我使用 getTime 的方法来保证每次都有一个新的 :key,使算法可以对子组件进行重新渲染。

<template>
  <ChildComponent :key="new Date().getTime()" />
</template>