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

向Vue 3组合式函数传递props无响应性问题

Vue3组合式函数中computed未响应prop变化的解决方法

你遇到的问题核心是没有正确访问Ref对象的原始值,导致computed无法追踪到prop的变化。

问题原因

通过toRefs(props)解构出来的aProp是一个Vue3的Ref响应式对象,而非原始字符串值。组合式函数里直接拿这个Ref对象和空字符串比较,没有访问它的.value属性,computed的依赖收集机制无法识别到这个响应式依赖,因此prop变化时computed不会重新执行。

修复方案

修改组合式函数,在computed回调中访问Ref对象的.value属性:

import { computed } from 'vue';
function useComposable(aProp) {
  const aHasChanged = computed(() => {
    // 必须访问Ref的.value来获取原始值
    return aProp.value === '';
  });

  return {
    aHasChanged,
  };
}

export { useComposable };

组件中的代码无需修改,因为toRefs(props)已经将prop转换为响应式的Ref对象,只要在组合式函数中正确访问.value,computed就能正常追踪prop的变化,当aProp更新时,aHasChanged会自动重新计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:32:12