State


React State

useState 中的 setXX 并不会立即改变 XX 的值,它只是告诉 React 在下一轮渲染时记住新的值。

setNumber(n => n + 1);

更新函数

如果新状态依赖旧状态,应使用函数形式的更新:

setNumber(n => n + 1);   // 安全:基于上一次的 state
setNumber(number + 1);   // 可能取到过期的 state

State 的保留与重置

同一 DOM 位置的同一组件,其 state 会被保留;不同的组件或不同的 DOM 位置,state 独立。

React 通过组件在 UI 树中的位置来判断是否保留 state,而非通过 JSX 标记的写法。