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

Vue计算属性未识别props变更?格式化todo.date需求遇阻

问题分析与修复方案

你的计算属性存在两个核心问题,导致日期格式化功能失效:

1. 计算属性未返回结果

计算属性的核心是返回基于依赖推导的值,而非给实例属性赋值。你当前的getDate没有返回值,模板中{{ getDate }}自然无法获取到格式化后的日期。

2. 响应式依赖的正确绑定

只要计算属性正确依赖this.todo.date,当父组件中todo.date(或整个todo对象)发生响应式变更时,计算属性会自动重新计算——但前提是父组件的修改符合Vue响应式规则(比如直接修改对象属性、或替换整个todo对象,而非通过非响应式方式修改)。


修正后的代码

import dayjs from 'dayjs'
export default{
  name:'To-do',
  props:{
    todo: Object
  },
  data(){
     return{
        isChecked: this.todo.checked,
        isModifying: false,
     }
   },
  computed:{
    getDate(){
      // 直接返回格式化后的日期,无需给this.date赋值
      return dayjs(this.todo.date).format("YY MM DD")
    }   
  }
}

额外优化提示

如果你需要isChecked同步父组件todo.checked的变更,不要在data中初始化赋值(data仅在组件创建时赋值一次),改用带 setter 的计算属性实现双向同步:

computed: {
  isChecked: {
    get() { return this.todo.checked },
    set(val) { this.$emit('update:checked', val) }
  },
  getDate(){
    return dayjs(this.todo.date).format("YY MM DD")
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:40:30