当前位置: 首页 > news >正文

Write operation failed: computed value is readonly问题解决

源代码:

// 封装倒计时逻辑函数
import { computed, ref } from 'vue'
import dayjs from 'dayjs'
export const useCountDown = () => {// 1.响应式数据const time = ref(0)// 格式化时间const formatTime = computed(()=>dayjs.unix(time.value).format('mm分ss秒'))// 2.开始倒计时的函数const start = (currentTime) => {// 倒计时逻辑formatTime.value = currentTime setInterval(() => {formatTime.value--}, 1000);}return {formatTime,start}
}

解析:

上述代码中的错误 Write operation failed: computed value is readonly 是因为尝试直接修改一个 computed 属性的值。在 Vue 3 中,computed 属性是只读的,不能直接给它赋值。修复这个问题,需要通过修改底层响应式数据来影响 computed 属性的值。在useCountDown 钩子中,直接修改 time 引用的值,而不是尝试修改 formatTimeformatTime 会根据 time 的变化自动更新。

更改后代码:

将上述代码中待修改的formatTime该为time即可,用time改变,formatTIme承接数据

import { ref, computed, onUnmounted } from 'vue';  
import dayjs from 'dayjs';  export const useCountDown = () => {  // 1. 响应式数据  const time = ref(0); // 倒计时秒数  // 2. 计算属性,用于格式化时间  const formatTime = computed(() => dayjs.unix(time.value).format('mm:ss'));  // 3. 开始倒计时的函数  const start = (totalSeconds) => {  time.value = totalSeconds; // 设置初始倒计时时间  const intervalId = setInterval(() => {  if (time.value > 0) {  time.value--; // 每秒减少1  } else {  clearInterval(intervalId); // 时间到,清除定时器  }  }, 1000);  // 组件卸载时清除定时器  onUnmounted(() => {  clearInterval(intervalId);  });  };  // 4. 重置倒计时的函数  const reset = (totalSeconds) => {  time.value = totalSeconds; // 重置倒计时时间  };  return {  formatTime,  start,  reset // 可以选择性地暴露 reset 函数  };  
};

结果展示:

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【小沐学GIS】基于C++QT绘制三维数字地球Earth(OpenGL)
  • VMware还原Windows11 ghost镜像
  • 【leetcode】贪心算法介绍
  • Linux系统安全——iptables相关总结
  • LeetCode_20_简单_有效的括号
  • 个人简历补充
  • 【C++笔记】第一阶段:C++基础入门
  • 算法-矩阵置零
  • Security6.2 中的SpEL 表达式应用(权限注解使用)
  • 代码随想录三刷day02
  • Tomcat(3)IDEA集成Tomcat新建web应用
  • python+django+vue汽车票在线预订系统58ip7
  • 网络安全(黑客)自学day1
  • Discuz! X收藏列表页调用封面图片详细教程
  • 【开源软件的影响力有多大?】
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 【面试系列】之二:关于js原型
  • css属性的继承、初识值、计算值、当前值、应用值
  • HashMap剖析之内部结构
  • Javascripit类型转换比较那点事儿,双等号(==)
  • Koa2 之文件上传下载
  • Redux系列x:源码分析
  • select2 取值 遍历 设置默认值
  • Spark RDD学习: aggregate函数
  • windows-nginx-https-本地配置
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 配置 PM2 实现代码自动发布
  • 前端工程化(Gulp、Webpack)-webpack
  • 前端设计模式
  • 前言-如何学习区块链
  • 山寨一个 Promise
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 微服务核心架构梳理
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • 1.Ext JS 建立web开发工程
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​queue --- 一个同步的队列类​
  • (Git) gitignore基础使用
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (面试必看!)锁策略
  • (南京观海微电子)——示波器使用介绍
  • (十六)一篇文章学会Java的常用API
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .java 9 找不到符号_java找不到符号
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .NET开源、简单、实用的数据库文档生成工具