【发布时间】:2019-10-20 09:42:44
【问题描述】:
使用解构状态计算新状态安全吗?
例如:
const [clickCount, setClickCount] = useState(0);
//then later
setClickCount(clickCount + 1)
我知道使用 this.state + 1 的类是不行的,最好使用 setState 的重载来提供先前的状态。鉴于文档使用了类似于我上面的示例并且没有提及这一点,我认为它是安全的。直到我发现 setState 动作签名是:
type SetStateAction<S> = S | ((prevState: S) => S);
如果它是安全的,我现在很好奇为什么这可以选择性地为函数提供先前的状态。否则,当您解构了应该同步的当前状态时,您什么时候需要这个?
编辑:
作为参考,这是文档中关于 setState with this.state 的说明:
setState() 不会立即改变 this.state 而是创建一个 等待状态转换。调用 this 后访问 this.state 方法可能会返回现有值。
不保证 setState 调用的同步操作 并且调用可能会被批处理以提高性能。
【问题讨论】:
标签: reactjs react-hooks