使用React-useState钩子的标准方法如下:
const [count, setCount] = useState(0);
然而,这const count
个变量显然将被重新分配到不同的原始值.
那么为什么变量没有定义为let count
呢?
使用React-useState钩子的标准方法如下:
const [count, setCount] = useState(0);
然而,这const count
个变量显然将被重新分配到不同的原始值.
那么为什么变量没有定义为let count
呢?
显然会被重新分配到不同的原始值
不是真的.当组件被重新加载时,函数会再次执行,创建一个新的作用域,创建一个新的count
变量,这与之前的变量无关.
例子:
let _state;
let _initialized = false;
function useState(initialValue) {
if (!_initialized) {
_state = initialValue;
_initialized = true;
}
return [_state, v => _state = v];
}
function Component() {
const [count, setCount] = useState(0);
console.log(count);
setCount(count + 1);
}
Component();
Component(); // in reality `setCount` somehow triggers a rerender, calling Component again
Component(); // another rerender
Note:个钩子要复杂得多,实际上并不是这样实现的.这只是为了证明类似的行为.