状态更新后,useState中的旧setX值仍然有效吗?

时间:2020-05-09 20:37:16

标签: javascript reactjs

假设我们使用React钩子useState,然后将setX存储在一个封闭的闭包中,即使从另一个地方调用setX也会保留引用。原始的setX仍然可以使用吗?

示例:

const [x, setX] = useState(0);

useEffect(() => {
  // this timeout runs `setX` first
  setTimeout(() => setX(1), 500);
}, []);

useEffect(() => {
  // this `setX` will be called after a new `setX` is returned
  // after the re-render caused by the first `setX`
  setTimeout(() => setX(2), 1000);
}, []);

虽然捕获旧版本的x显然会引起问题,并且有解决方法(setX(a => a + 1)useContext),但此问题仅针对{{1} }及其寿命。

setX是否有可能在每次通话中返回相同的设置器?还是总是返回一个新的?即使值更改后,所有返回的二传手都有效吗?

请注意,这不一定是关于它在当前实现中如何工作的问题,因为这是一个可以轻易检查的问题。问题是它应该如何工作,更重要的是应如何使用,以及开发人员对useState,其生存期和使用情况有什么期望。

0 个答案:

没有答案
相关问题