3 ms·
Short, potentially inaccurate: Render functions are only called when a component is being rendered. React keeps track of which component is currently being ren
by etblg 6y ago
Short, potentially inaccurate:
Render functions are only called when a component is being rendered. React keeps track of which component is currently being rendered. When you call `useState`, React knows which component is currently being rendered and keeps track behind the scenes which state that component has.
The way it knows which value it should return for `a` ties directly in with why you need to call `useState` calls in the same order -- React basically keeps a list of the state behind the scenes, and returns the (secret behind the scenes) state in order. If you change around the order of `useState` calls, it can't use the ordering of the calls to determine which state needs to be returned.
- sydd 6y agoand what happens if I unmount and remount it? something like: <div> {isLoggedIn ? <LogoutButton /> : abcd } </div> and I change the value of isLoggedIn. Does the state reset? I'm not asking for a solution, just pointing out that even a 'simple' hook like useState has its small quirks.
- acemarke 6y agoIt does reset, because toggling that flag will unmount the old instance of the component, and then mount a new instance. This is the same behavior as has always existed with class components and `this.setState()`. Component-scoped state only exists as long as that specific instance of the component is mounted.