【发布时间】:2020-09-27 23:37:01
【问题描述】:
我的问题是概念性的,那就是我们都知道使用 useEffect Hook,每次在每次渲染后调用 useEffect 时,React 都会在下一次运行效果之前清理上一次渲染中的 use Effects,并用他的新渲染再次声明 useEffect。 useEffect 如何保持之前的状态?。
【问题讨论】:
-
我不确定我是否真的理解您的问题,但如果我做得正确:看起来您正在尝试使用 useEffect 将某些状态与您获得的道具同步。我认为这是一个不好的模式,你不应该在子组件中使用状态:只计算值,如果它是一个昂贵的,那么你可以添加一个 useMemo
-
为什么要保持之前的状态?它只是根据某些条件运行函数,你有闭包来“保存”函数逻辑中的状态。
-
不,我没有这样做,为此我知道使用 useLayoutEffect 用于同步,但我的问题不同。我的问题是如果“react 在下次运行效果之前清理上一次渲染中的使用效果并再次声明 useEffect”,那么 React 如何保持以前的状态。例如,我给出的值计数为 0,更新计数变为 1,然后渲染 useEffect 被清理并再次声明,然后我们如何获得计数值为 1。
-
请用你想弄清楚的例子编辑问题。
-
useEffect 与状态无关,这就是原因
标签: javascript reactjs react-hooks