You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue3中绑定class的ref关联函数为何随ref值变化触发更新?

为什么修改ref值时,绑定的类判断函数会重复执行?

先看你的代码:

<template>
  <h1 :class="{ disabled: aClass() }">Hello</h1>
</template>

<script setup lang="ts">
import { ref } from "vue";

const a = ref(1);

function aClass() {
  if (a.value === 2) {
    return true;
  }
  return false;
}

setTimeout(()=>{
   a.value = 2;
}, 3000)

setTimeout(()=>{
   a.value = 1;
}, 6000)

</script>

<style>
.disabled {
  background: red;
  color: blueviolet;
}
</style>

原因很直白:

  • Vue的响应式系统会追踪模板里用到的响应式依赖。你的aClass()函数内部读取了a.value,所以a这个ref会被标记为该模板表达式的依赖。
  • 3秒后a.value改成2时,响应式系统检测到依赖变化,触发组件重新渲染。重新渲染时,模板里的aClass()会被再次调用,返回true,h1加上disabled类,背景变红。
  • 6秒后a.value改回1,依赖再次变化,组件再次重新渲染,aClass()被调用返回false,disabled类被移除,背景恢复原样。

总结:只要响应式依赖发生变化,组件就会重新渲染,模板里的函数就会重新执行一次,用来更新对应的视图状态。

内容的提问来源于stack exchange,提问作者Luzz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 17:32:19