What is state in React?
State is the heart of your React application.
I challenge you to try to build a React application without any type of state. You’d probably be able to do something, but you would soon conclude that props cannot do everything for you and get stuck.
As mentioned in the introduction, state is a mutable data source used to store your data.
State is mutable, which means that it can be changed over time. When a state variable changes, your React component will re-render to reflect any changes that the state causes to your UI.
Okay, now, you might be wondering, “What will I store in my state?” Well, the rule of thumb that I follow is that if your data fits into any of the following points, then it’s not state:
- Props
- Data that will always be the same
- Data that can be derived from other state variables or props
Anything that doesn’t fit this list can be stored in state. This means things such as data you just fetched through a request, the light or dark mode option of a UI, and a list of errors that you got from filling a form in the UI are all examples of what can be state.
Let’s look at the following example:
const NotState = ({aList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]}) => { const value = "a constant value"; const filteredList = aList.filter((item) => item % 2 === 0); return filteredList.map((item) => <div key={item}>{item}</div>); };
Here, we have a component called NotState
. Let’s look at the values we have in there and use our rule of thumb.
The aList
variable is a component prop. Since our component will receive this, it doesn’t need to be state.
Our value
variable is assigned a string value. Since this value will always be constant, then it doesn’t need to be state.
Finally, the filteredList
variable is something that can be derived from our aList
prop; therefore, it doesn’t need to be state.
Now that you are familiar with the concept of state, let’s get our hands dirty and understand how can we manage it in React.