Mobx Auto运行 运行 过于频繁/在某些情况下需要跳过/运行 仅在完成后
Mobx Autorun running too often / need it to skip in some cases / run only after finished
我知道这不是最佳实践,但它是迄今为止我找到的最高效的解决方案。它监视一个对象,并在 auto运行.
中转换该对象
此设置适用于小型数据集,但当有大量更改时,它会卡在“100 次循环且未稳定”错误中。
我想知道是否有某种方法可以使其仅迭代一次/整理所有更改并一次应用它们。
我已经尝试了很多解决方案/变通方法,涉及计时器、深度对象比较(即如果它没有改变就不要运行)等,但它们要么禁用自动运行 或导致性能极差。
我想总结一下:
- 有没有办法让自动运行不在同一帧上执行更改?
- 是否有更好的解决方案让 auto运行 监视对象中的每个可观察对象?
- 有没有办法限制自动运行?
- 有更好的解决方案吗?
如果没有一些关于您正在做的事情的最小代码示例,很难说出任何有用的东西。但听起来你正在读取和修改自动运行中的相同数据,这引入了循环。考虑使用 reaction
,它可以让您更好地区分您想听取哪些数据做出反应,以及您希望在发生更改后采取的行动
我知道这不是最佳实践,但它是迄今为止我找到的最高效的解决方案。它监视一个对象,并在 auto运行.
中转换该对象此设置适用于小型数据集,但当有大量更改时,它会卡在“100 次循环且未稳定”错误中。
我想知道是否有某种方法可以使其仅迭代一次/整理所有更改并一次应用它们。
我已经尝试了很多解决方案/变通方法,涉及计时器、深度对象比较(即如果它没有改变就不要运行)等,但它们要么禁用自动运行 或导致性能极差。
我想总结一下:
- 有没有办法让自动运行不在同一帧上执行更改?
- 是否有更好的解决方案让 auto运行 监视对象中的每个可观察对象?
- 有没有办法限制自动运行?
- 有更好的解决方案吗?
如果没有一些关于您正在做的事情的最小代码示例,很难说出任何有用的东西。但听起来你正在读取和修改自动运行中的相同数据,这引入了循环。考虑使用 reaction
,它可以让您更好地区分您想听取哪些数据做出反应,以及您希望在发生更改后采取的行动