javascript - 新编译的 React 应用程序符合预期,后续运行表现出意外行为
问题描述
我正在使用 React 为流行的排序算法创建一个可视化工具。该程序随机生成一个整数值数组,它在屏幕上表示为条形。条形越高,数字越高。条形图是随机排列的。可视化器对排序进行动画处理,以便查看者逐步了解算法的工作原理,直到所有条形图从最短到最高排序。我的问题出现在快速排序上。有时,程序正确执行并在算法终止时显示正确排序的条形图。其他时候,它没有。有时有一个不合适的酒吧,有时是两个或三个或四个。我检查了我的数组状态,它似乎已排序,让我相信这是一个动画问题。行为(数组的正确/错误显示)似乎是随机的。我发现的唯一一致性是,当我在 IDE 中对程序进行更改然后重新编译时,第一次运行总是成功(到目前为止,在第一次运行后始终错误地显示 4-6 条的数组上,8 为 8)。这里发生了什么?内存有什么问题吗?这是处理动画的函数。如果有帮助,我会附上排序功能和验证功能。
export const quickSortAnimations = animations => {
const arrayBars = document.getElementsByClassName('array-bar');
for(let i=0; i < animations.length; ++i){
const {leftIdx, rightIdx, pivot, swap} = animations[i];
const leftBarStyle = arrayBars[leftIdx].style;
const rightBarStyle = arrayBars[rightIdx].style;
const pivotBarStyle = arrayBars[pivot].style;
setTimeout(() => {
pivotBarStyle.backgroundColor = 'purple';
leftBarStyle.backgroundColor = 'red';
setTimeout(() => {
leftBarStyle.backgroundColor = 'turquoise';
if (swap){
if(rightIdx === pivot) rightBarStyle.backgroundColor = 'turquoise';
const tmpHeight = leftBarStyle.height;
leftBarStyle.height = rightBarStyle.height;
rightBarStyle.height = tmpHeight;
}
}, 2);
}, i * 3);
}
}
解决方案
推荐阅读
- objectbox - ObjectBox:在 Dart 中打开用 Java 创建的 DB 文件时出现问题
- c# - 使用基本身份验证连接到 SignalR 集线器
- google-apps-script - 如何使用 Google Apps 脚本遍历范围并根据条件构建“表格”?
- r - 有没有办法在 ggplot 中找到方面的名称?
- django - Django - 如何获取与对象连接的所有子字段的计数
- ios - 'NSInternalInconsistencyException',原因:'无法在包中加载 NIB:
- python - 需要 Python 正则表达式帮助
- flask - Flask WTForms 动态默认值
- javascript - 我可以知道如何将脚本从 Javascript 更改为 Typescript 函数
- .net-core - 让我的控制台应用程序不依赖于 runtimeconfig.dev.json?