ReactJS - State Management Using React Hooks
Hello there, future React developers! Today, we're going to embark on an exciting journey into the world of state management using React Hooks. As your friendly neighborhood computer science teacher, I'm thrilled to guide you through this adventure. Don't worry if you're new to programming – we'll take it step by step, and before you know it, you'll be managing state like a pro!

What is State in React?
Before we dive into the nitty-gritty, let's understand what "state" means in React. Imagine you're building a sandcastle. The current shape and size of your sandcastle is its "state". As you add or remove sand, the state of your sandcastle changes. Similarly, in React, state represents the current condition of a component – its data, appearance, or behavior at any given moment.
Introducing React Hooks
Now, let's talk about React Hooks. Think of hooks as magical tools that give your components superpowers. They allow functional components to have state and other React features without writing a class. The hook we'll focus on today is useState.
Create a Stateful Component
Let's start by creating a simple stateful component. We'll build a counter that increases when you click a button.
import React, { useState } from 'react';
function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
Let's break this down:
- We import
useStatefrom React. - Inside our
Counterfunction, we calluseState(0). This creates a state variablecountinitialized to 0, and a functionsetCountto update it. - We display the current
countin a paragraph. - When the button is clicked, we call
setCount(count + 1)to increment the count.
Every time you click the button, React re-renders the component with the updated count. It's like magic, isn't it?
Introducing State in Expense Manager App
Now that we've got our feet wet, let's dive deeper with a more practical example – an expense manager app. We'll create a component that allows users to add expenses.
import React, { useState } from 'react';
function ExpenseManager() {
const [expenses, setExpenses] = useState([]);
const [newExpense, setNewExpense] = useState('');
const [newAmount, setNewAmount] = useState('');
const addExpense = () => {
if (newExpense && newAmount) {
setExpenses([...expenses, { name: newExpense, amount: parseFloat(newAmount) }]);
setNewExpense('');
setNewAmount('');
}
};
return (
<div>
<h2>Expense Manager</h2>
<input
type="text"
value={newExpense}
onChange={(e) => setNewExpense(e.target.value)}
placeholder="Expense name"
/>
<input
type="number"
value={newAmount}
onChange={(e) => setNewAmount(e.target.value)}
placeholder="Amount"
/>
<button onClick={addExpense}>Add Expense</button>
<ul>
{expenses.map((expense, index) => (
<li key={index}>{expense.name}: ${expense.amount}</li>
))}
</ul>
</div>
);
}
Wow, that's a lot to take in! Let's break it down:
-
We have three state variables:
-
expenses: An array to store all expenses -
newExpense: A string for the name of a new expense -
newAmount: A string for the amount of a new expense
-
-
The
addExpensefunction:- Checks if both
newExpenseandnewAmountare not empty - Adds a new expense object to the
expensesarray - Clears the input fields
- Checks if both
-
In the JSX:
- We have two input fields for the expense name and amount
- A button to add the expense
- A list that displays all expenses
Remember when I mentioned sandcastles earlier? This is like having a sandbox where you can add new castles (expenses) whenever you want. Each castle has a name and a size (amount), and you can see all your castles listed below.
Methods Table
Here's a handy table of the methods we've used:
| Method | Description |
|---|---|
| useState | Creates a state variable and a function to update it |
| setExpenses | Updates the expenses array |
| setNewExpense | Updates the newExpense string |
| setNewAmount | Updates the newAmount string |
| map | Creates a new array by calling a function on every element in the array |
Conclusion
Congratulations! You've just taken your first steps into the world of state management with React Hooks. We've learned how to create stateful components, update state, and even built a mini expense manager app.
Remember, learning React is like building sandcastles – start small, experiment, and don't be afraid to knock it down and start over. With practice, you'll be building complex and beautiful applications in no time.
Keep coding, keep learning, and most importantly, have fun! Until next time, this is your friendly neighborhood computer science teacher signing off. Happy React-ing!
Credits: Image by storyset
