javascript - 当我调用一次时,我的减速器被触发了两次。当我尝试修复它时有一些奇怪的东西
问题描述
在演示网页上,我有 2 个按钮,1 个是“开始”按钮,另一个是“返回”按钮。假设当我单击“go”按钮时,当前值将按以下格式显示在控制台中:
before:{"a":[12,27],"b":[63,14]}
after:{"a":[75,27],"b":[63,14]}
不幸的是,实际结果如下:
before:{"a":[12,27],"b":[63,14]}
after:{"a":[75,27],"b":[63,14]}
before:{"a":[12,27],"b":[63,14]}
after:{"a":[75,27],"b":[63,14]}
当我在组件中评论以下DEF
行时:
setTimeout(()=>{
setContextValue({undoUtil});
},10)
然后,当前值将以正确的格式显示在控制台中。但是,它不会触发屏幕布局刷新。
我该如何解决这个问题?
解决方案
你到底想做什么?这是非常不清楚的。您看到它在控制台中登录两次的原因是因为您有两次调用undoUtil.set
setTimeout(() => {
temp["a"][0] = 75;
undoUtil.set(temp);
}, 0);
setTimeout(
()=>{
temp['a'][1]=20;
undoUtil.set(temp);
}
,0);
为什么 setTimeout 的?这是怎么回事?
不是答案,我知道,但评论太长了。
推荐阅读
- javascript - 按键搜索对象列表并返回计数
- javascript - 反应路由器,路由不起作用
- typescript - 仅特定类型的泛型类的方法
- python - 如何基于两列堆叠数据框
- javascript - 每次我尝试使用 Javascript 上传内容时,Google Drive API v3 都会上传“无标题”文件
- git - 当我在原始分支中时,GIT 复制提交到另一个分支
- java - 我的等候名单只分配给一个展位,但我必须分配给所有 6 个展位(在 java 中)
- python - 使用实现级方法的抽象方法
- c# - 面板大小到窗口大小(统一)
- reactjs - Solidity:如何通过传入地址来检索映射结构的内容