计算属性报错:Maximum recursive updates exceeded.
计算属性或普通函数中有对相关依赖的响应式数据进行一次以上的更新就可能导致达到最大执行的限制:
const calcSurplus = computed(() => (k: string) => {
const nowMont = cashbook.value[year.value][k];
let isFirstMonth = false;
let expenses = 0;
let surplus = 0;
nowMont.outlays?.forEach(ele => {
expenses += Number(ele.cost);
});
montKs.forEach((ele, index) => {
if (k == ele && index == 0) {
isFirstMonth = true;
}
});
surplus = Number(nowMont.budget) - expenses;
if (!isFirstMonth) {
const nowK = montKs.findIndex(ele => ele == k);
const preMont = cashbook.value[year.value][montKs[nowK - 1]];
if (preMont?.surplus && nowMont?.budget) {
surplus = Number(nowMont.budget) - expenses + Number(preMont.surplus);
}
}
nowMont.surplus = surplus;
// here =>
nowMont.budget = surplus;
return surplus;
});
这里有两个更改响应式数据的表达式,经过测试,删除其中一个,就不会出现标题中所说的问题。于是我猜想,因为修改赋值 surplus,页面 DOM 更新、重新渲染,此时,又接着修改 budget 属性,页面 DOM 又更新、又重新渲染,以至于出现 Maximum recursive updates exceeded. 警告。
总结:在模板中使用计算属性或函数时要注意更新的响应式数据不要超过一个(也有可能是仅限于我这个情况),如果出现执行次数超出的问题可以最先从这个地方着手解决,总之提供了一个解决该问题的思路。
计算属性报错:Maximum recursive updates exceeded.的更多相关文章
- 打开sa属性报错
--如果打开sa属性报错如下:无法显示请求的对话框.属性IsLocked不可用于“登录名sa".该对象可能没有此属性,也可能是访问权限不足而无法检索 --解决办法:首先用windows登录, ...
- vue报错Maximum call stack size exceeded at abort (webpack-internal:///./node_modules/_vue-router@3.1.3@vue-router/dist/vue-router.esm.js:2079)
报错原因: import cellDetail from '@/components/common/dialog/cellDetail.vue'; 解决方法: import celldetail fr ...
- ie8下修改input的type属性报错
摘要: 现在有一个需求如图所示,当用户勾选显示明文复选框时,要以明文显示用户输入的密码,去掉勾选时要变回密文,刚开始想到的就是修改输入框的type来决定显示明文还是密文,使用jQuery的attr来做 ...
- Mycat分布式数据库架构解决方案--配置defaultAccount属性报错解决方案
echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! 该文章 ...
- Mybatis selectKey标签的keyProperty属性报错,关键字间隔不能有空格
源代码片段: <insert id="addAdminAction" parameterType="x.x.x.RoleVo"> <selec ...
- npm install时 报错Maximum call stack size exceeded
给npm降级或者升级 降级 : npm install -g npm@5.4.0 升级 : npm install -g npm 升级到最新版
- ES部署报错 max file size 和 kibana 报错File size limit exceeded
启动失败一 ERROR: [2] bootstrap checks failed [1]: max file descriptors [4096] for elasticsearch process ...
- post请求(headers里有属性)报错:Request header field xxx is not allowed by Access-Control-Allow-Headers in preflight response
post 请求,headers里有属性(xxx).请求时报错: XMLHttpRequest cannot load <url>. Request header field xxx is ...
- Mysql5.7自定义函数递归报错1424 Recursive stored functions and triggers are not allowed
示例: DELIMITER $$CREATE FUNCTION test(countnum INT)RETURNS INT DETERMINISTICBEGINDECLARE tempnum INT ...
- 关于js中的for(var in)遍历属性报错问题
之前遇到过这个问题,但是没找到问题的所在,将for(var i in array){} 改成了for(var i ;i<array.length;i++)循环,但是今天又遇到了,mark一下错 ...
随机推荐
- 命令指定IP端口号
tcping命令是针对tcp监控的,也可以看到ping值,即使源地址禁ping也可以通过tcping来监控服务器网络状态,除了简单的ping之外,tcping最大的一个特点就是可以指定端口. 将下载好 ...
- Ubuntu:Docker 容器操作
创建容器 1.docker run [option] 镜像名 [向启动容器中传入的命令] 常用可选说明 -i 表示以"交互模式"运行容器 -t 表示容器启动后会进入其命令行.加入这 ...
- JavaScript:七大基础数据类型:布尔值boolean、空null、未定义undefined
布尔值boolean 没什么好说的,同其他编程语言一样,就两个值:true 和 false: 空null JS的null,和Java等编程语言的概念不一样,它不是一个"不存在的对象" ...
- Generator(生成器),入门初基,Coroutine(原生协程),登峰造极,Python3.10并发异步编程async底层实现
普遍意义上讲,生成器是一种特殊的迭代器,它可以在执行过程中暂停并在恢复执行时保留它的状态.而协程,则可以让一个函数在执行过程中暂停并在恢复执行时保留它的状态,在Python3.10中,原生协程的实现手 ...
- Less-1(GET字符型)
union联合注入(方法一) 进入靶场 按照要求提交一个id:http://192.168.121.131/sqli/Less-1/?id=1 数据库执行语句:select * from news w ...
- RocketMQ Compaction Topic的设计与实现
本文作者:刘涛,阿里云智能技术专家. 01 Compaction Topic介绍 一般来说,消息队列提供的数据过期机制有如下几种,比如有基于时间的过期机制--数据保存多长时间后即进行清理,也有基于数据 ...
- dotnet 代码优化 聊聊逻辑圈复杂度
本文属于 dotnet 代码优化系列博客.相信大家都对圈复杂度这个概念很是熟悉,本文来和大家聊聊逻辑的圈复杂度.代码优化里面,一个关注的重点在于代码的逻辑复杂度.一段代码的逻辑复杂度越高,那么维护起来 ...
- 如何进行动态ip的域名解析设置?
如何进行动态ip的域名解析设置?目前,有一部分域名客户出于节省成本.技术验证等因素,会把自己家里或是部门的电脑用来当做Web服务器.mail服务器或是ftp服务器.如果想提供给其他人长期浏览,一般都要 ...
- 基于 VScode 搭建 STM32 运行环境
所需软件 vscode: 是我们的代码编辑器 STM32CubeMX: 是我们配置和初始化的软件 OpenOCD: 是开源片上调试器, 他下载完是一个压缩包, 需要配置环境 arm-none-eabi ...
- docker配置阿里云加速
登录阿里云找到镜像加速 搜索容器镜像服务,进入管理控制台 找到镜像加速器,根据下面配置好即可 centos7.7x64例子 sudo mkdir -p /etc/docker sudo tee /et ...