我有一个聊天组件,该组件使用API来填充messages
状态,也有不同的区域,它们具有不同的聊天内容,并作为道具传递给该组件。
在此组件中,我有3个useEffects
,但我对其中两个运行不正常的部分感兴趣。在第一个useEffect中,我有一些代码基本上将区域更改为messages
时的undefined
状态重置。我需要执行此操作,以便能够区分在显示加载组件<Spinner />
时尚未调用的API还是已调用该API且已检索到空数组以显示<NoData>
的API零件。
我遇到的问题是,当我更改区域时,useEffects
会被触发,但是第一个useEffect
不会在第二个{之前将messages
状态更新为未定义{1}}被调用。在由于历史原因而重新提交后,消息以未定义的形式出现,但是第二个useEffect
不再触发。我不明白为什么在第二个之前的第一个useEffect
中没有更新状态。同样奇怪的是,这在过去对我有用。我在不推动git的情况下改变了一些东西,现在我感到困惑。下面的代码:
useEffect
答案 0 :(得分:0)
您无法通过这种方式获得想要的东西。在useEffect中应用的状态更改在下一个渲染周期之前不会生效,以下回调仍将看到当前的const值。 如果要在当前渲染周期中更改值,唯一的选择是将const放宽为let并自行设置变量。
毕竟:您期望const会改变吗? ;)