当前位置: 首页 > 面试题库 >

使用中的无限循环

南宫云
2023-03-14
问题内容

我一直在使用React 16.7-alpha中的新钩子系统,并且当我正在处理的状态是对象或数组时陷入useEffect的无限循环中。

首先,我使用useState并使用一个空对象启动它,如下所示:

const [obj, setObj] = useState({});

然后,在useEffect中,我再次使用setObj将其设置为空对象。作为第二个参数,我传递了[obj],希望如果对象的 内容
没有更改,它也不会更新。但是它一直在更新。我猜是因为不管内容如何,​​这些总是不同的对象,这使React认为它不断变化?

useEffect(() => {
  setIngredients({});
}, [ingredients]);

数组也是如此,但是作为原语,它不会像预期的那样卡在循环中。

使用这些新的挂钩,在检查天气内容是否已更改时,应该如何处理对象和数组?


问题答案:

将空数组作为第二个参数传递给useEffect会使它仅在安装和卸载时运行,从而停止任何无限循环。

useEffect(() => {
  setIngredients({});
}, []);

我在https://www.robinwieruch.de/react-
hooks/
上有关React
hooks的博客文章中向我阐明了这一点。



 类似资料:
  • 问题内容: 请看下面的Java 无限循环。它导致其下面的语句的编译时错误。 以下相同的无限循环可正常工作,并且不会发出任何错误,其中我只是用布尔变量替换了条件。 同样在第二种情况下,循环之后的语句显然不可访问,因为布尔变量为true,但编译器根本没有抱怨。为什么? 编辑:显然,以下版本的卡在无限循环中,但是即使循环中的条件始终存在,因此循环下面的语句也不会对该语句下的语句发出任何编译器错误,因此循

  • 我有一个nodejs应用程序,它需要几个调用异步函数的无限循环。我正在考虑实施以下措施: 我担心的是,如果异步函数需要很长时间才能完成,那么打开的引用就会堆积起来,这可能会导致内存崩溃。 setInterval是这项工作的正确工具吗?有没有更合适的工具? 什么是最优雅的方法来确保如果上一次运行没有返回,执行()函数不会启动?

  • 我想做一些东西,如果我键入“1”,数字将是升序(x++),如果我键入“2”,它将是降序。X++工作得很好,但如果我使用x--,它将无限循环

  • 问题内容: 此代码将导致无限循环的机会是什么? 实际上,这会导致无限循环。我的怀疑是因为我没有服用,是真的吗? 问题答案: 是。除非您不打电话,否则它将永远不会继续进行下一项。Beause 将返回您已在列表/集中添加的对象。

  • 我目前正在做一些项目euler问题,并使用长数据类型为for循环获取无限循环。我通常使用整数,对这种数据类型没有太多经验。?有人能建议如何解决这个问题吗? 问题是:13195的质因数是5、7、13、29,600851475143数最大的质因数是多少?

  • 问题内容: 我正在使用第三方库来处理大量数据集。该过程偶尔会陷入无限循环(或被阻塞- 不知道为什么并且无法进入代码)。我想在设定的时间后消除这个问题,然后继续处理下一个案件。一个简单的例子是: processData通常最多需要1秒。我想设置一个计时器,该计时器在10秒后杀死processData() 编辑我将不胜感激代码片段(我没有在使用Thread的过程中练习过)。执行器方法看起来很有用,但我