React comes with a very clear and straightforward API to mutate the internal state of components. Using the setState function, we can tell the library how we want the state to be changed. As soon as the state is updated, React re-renders the component, and we can access the new state through the this.state property—that's it.
Sometimes, however, we could make the mistake of mutating the state object directly, leading to dangerous consequences for the component's consistency and performance.
First of all, if we mutate the state without using setState, two bad things can happen:
- The state changes without making the component re-render
- Whenever setState gets called in the future, the mutated state gets applied
If we go back to the counter example and change the click handler to the following, we can see that clicking + does not affect the rendered...