Nac*_*cho 25 javascript ecmascript-6 reactjs react-hooks
The standard way to use a React useState Hook is the following:
const [count, setCount] = useState(0);
Run Code Online (Sandbox Code Playgroud)
However this const count variable is clearly going to be reassigned to a different primitive value.
Why then is the variable not defined as let count?
Fel*_*ing 35
clearly going to be reassigned to a different primitive value
Not really. When the component is rerendered, the function is executed again, creating a new scope, creating a new count variable, which has nothing to do with the previous variable.
Example:
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 rerenderRun Code Online (Sandbox Code Playgroud)
Note: Hooks are way more sophisticated and are not actually implemented like this. This is just to demonstrate a similar behavior.