Introduction to the useState hook in React (2023)

react is popularjavascript libraryused to build user interfaces. He providesprogrammerswith a wide range of tools including hooks to make building jobs easier and more efficient.

One of the most used hooks isstate of use, which allows developers to add state to functional components.

In this article, we'll take a closer lookstate of use, their uses and best practices for their implementation.

What is the useState hook?

Before we go into detailsstate of use, let's first define what Hooks are and how they differ from traditional class components.

Hook is a feature that allows you to use state and otherto reactfeatures into functional elements.

Unlike class components, functional components don't have a built-in way to store state. hooks likestate of useaddress this issue by allowing state to be added to functional components.

The background of the useState hook

Before the introduction ofstate of useHook in React 16.8, functional components were unable to maintain their own state. Instead, developers needed to use class components or external state management libraries like Redux to manage state in their applications.

While class components and external state management libraries are still viable options, an introductionstate of useHook has made it much easier for developers to add state to their functional components and has simplified ReactAPIGenerally.

zstate of useHook developers can now use functional components in most use cases, reducing the amount of code required and making it easier to assess the health of your application.

UseState syntax components

Ostate of useHook takes an initial state value as an argument and returns an array containing two elements: the current state value and a function that updates the state value.

(Video) Full React Tutorial #8 - Using State (useState hook)

Here is the syntax:

const [state, define state] = useState(initial state);
  • country: Current state value.
  • define state: A function that updates the state value.
  • initial state: The initial value of the declared state variable. It's optional. If no value is provided (not recommended), it will automatically be set toindeterminate.

It is important to note that when usingstate of useHook, React will automatically render your component whenever the state value changes.

How to use the useState hook

to implantstate of use, call the function and pass the initial value as an argument. The function returns an array containing the current state value and a function updating the state.

Here is an example of usagestate of usemanage a simple counter:

import { useState } from 'react'; function Counter() { const [count, setCount] = useState(0); turn back (

You have clicked {count} times

);}export standard Lada;

In this example, we initialize the filetellstate to 0 usingstate of useHook. We then render the current value of the counter and the button. When clicking the button, the counter value will be incremented because we added the z arrow functionnumber of settingsfunction.

when usingstate of useHook, make sure you import it from React. If you forget to import it, you will likely encounter errors when trying to use the hook. Here's how to import useState:

import { useState } from "react";

by inclusionstate of usein the import statement you tell React that you want to use the methodstate of useConnect your component.

Using different data types with useState hook in React

Ostate of useHook in React is not limited to managing just strings or numeric data types. It can also be used to manage the states of various data types such as arrays, objects and Booleans.

(Video) Learn useState In 15 Minutes - React Hooks Explained

Using arrays with the useState hook

You can usestate of useHook for array management in React. For example, if you have an array of fruits, you can initialize its state with an array:

import { useState } from 'react';function App() { const [list, setList] = useState(['apple', 'banana', 'orange']); const addToList = () => { const newItem = 'cluster'; setList([...lista, novo item]); }; retorna (
    {list.map((item) => (
  • {item}
  • ))}
);}export default application;

In this example, we usestate of usemanage an array calledlist. initial statelistis defined as an array containing three elements -litter,banana, EUOrange.

We also createadded to lista function that copies all elements of an array with the spread operator (...) and then adds a new itemuvato dolistarray each time the "Add Item" button is clicked.

This time we are not updating the state directly with the arrow function, as it is more appropriate to create this operation as a standalone function and call it withwhen clickingmethod added toAdd Itembutton.

Using objects with the useState hook

You can also use the so-calledstate of useHook to manage an object in React. Here is an example:

import { useState } from 'react'; function App() { const [user, setUser] = useState({ name: 'John', age: 30 }); const handleClick = () => { setUser({ ...user, age: user.age + 1 }); }; Returns (

Name: {user.name}

Age: {user.age}

);} export the default application;

In this example, we usestate of usemanage an object called user. initial statefrom the useris defined as an object containing two properties -nameEUage.

(Video) Learn to use State in React in 19 minutes (for beginners)

We also have a functionmanipulateClickwhich copies all of the object's data using the spread operator (...), and also increases the age of the user the1at any timeincrease agethe button is clicked.

It is important to know that you can assign this object to a variable and then initialize the variable. This is useful when you have a large object or array and want to write easy-to-understand code:

import { useState } from 'react'; // Declare datalet userData = { name: 'John', age: 30,};function App() { const [user, setUser] = useState(userData); const handleClick = () => { setUser({ ...user, age: user.age + 1 }); }; Returns (

Name: {user.name}

Age: {user.age}

);} export the default application;

Using boolean values ​​using the useState hook

You can also use the so-calledstate of useHook to handle a boolean in React. Here is an example:

import { useState } z 'reagir'; funkcja App() { const [isOn, setIsOn] = useState (falso); const toggleSwitch = () => { setIsOn(!isOn); }; retornar (

The key is {isOn? 'On off'}

);} export default application;

In this example, we usestate of usemanage a boolean namedit's on. initial stateit's onis set toFALSEHOOD. We also have a functiontrocarwhich toggles the valueit's onat any timeTrocarthe button is clicked.

This feature can be used to manage switching between light and dark modes in your projects.

(Video) React Hooks Tutorial - 2 - useState Hook

Before we get to the summary, let's look at a more advanced usage.state of useHook with forms.

Hook and useState forms

To handle form data and user input in React, you use state. Used to track the current values ​​of form elements. It tracks all user interactions like typing text or selecting an option from a dropdown list and finally updates the status with the new value.

Here is an example of usagestate of useto create a simple form:

import { useState } from 'react'; let formStateData = { first name: '', last name: '', email: '',}; function Form() { const [formData, setFormData] = useState (formStateData); const handleInputChange = (event) => { const { name, value } = event.target; setFormData({ ...formData, [name]: value }); }; const handleSubmit = (event) => { event.preventDefault(); console.log(form data); }; Returns (
);}export standard form;

In this example, we first create an object for the data that will be collected through a form with default values ​​forname,surname, EUe-mailtab. Then we initialize the filecreate databeen usingstate of use.

let formStateData = {nome: '', sobrenome: '', email: '',}; const [formData, setFormData] = useState(formStateData);

Then we define ahandleInputChangefile update functioncreate datastate whenever a form field is changed.

const handleInputChange = (event) => { const { name, value } = event.target; setFormData({...formData, [name]: value});};

Finally, we define amanipulateSenda function that logs the current form data to the console when the form is submitted.

const handleSubmit = (evento) => { event.preventDefault(); console.log(formData);};

Use state best practices

when usingstate of useHook, it's important to follow best practices to avoid common mistakes and ensure optimal performance. Here are some tips to keep in mind:

  • Avoid deeply nested state: Rather than storing complex state data in an object, consider breaking it into smaller chunks for easier management.
  • Enjoy functional upgrades: When updating the state from the previous state, use functional updates to avoid race conditions and ensure the correct state is updated.
  • Avoid excessive status updates: Updating your status can be expensive, so try to minimize the number of updates you make. consider usingUseEffectPlug in batch updates and optimize performance.
  • Avoid unnecessary re-rendering: React will re-render the component whenever its state or props change. To avoid unnecessary re-rendering, use memo.

summary

In this article, we examinestate of useDive in and learn how to use it to add state to functional components. We also talk about how to use it.state of usewith forms, arrays, and objects and discussed best practices for optimal performance. By following these best practices, you can ensure that your React apps are efficient, scalable, and maintainable.

Looking for the perfect hosting solution for your React apps? to giveKinsta app hostingTry it for free!

FAQs

What is the use of useState hook in React? ›

What is the useState Hook? useState is React Hook that allows you to add state to a functional component. It returns an array with two values: the current state and a function to update it. The Hook takes an initial state value as an argument and returns an updated state value whenever the setter function is called.

Could you explain why Hooks are introduced? ›

With Hooks, you can extract stateful logic from a component so it can be tested independently and reused. Hooks allow you to reuse stateful logic without changing your component hierarchy. This makes it easy to share Hooks among many components or with the community.

What arguments can the useState () hook consume? ›

The useState hook can take only one argument. But this argument can be of any data type. It can a number, string, boolean, or even an array or object. To declare an initial state value, you use the following syntax.

How many arguments are passed to useState? ›

useState only accepts one argument: the initial value of the state variable. Let's take a look at an example.

When should the useState () be used? ›

useState() anytime you have to create a state. The useState() hook takes in the initial value of the state variable as an argument. This value could be of any data type, such as string, number, object, array, and lots more.

Why do we need Hooks in React? ›

The origin of React hooks

Hooks make React so much better because you have simpler code that implements similar functionalities faster and more effectively. You can also implement React state and lifecycle methods without writing classes.

What is the main purpose of a hook? ›

A hook is an opening statement (which is usually the first sentence) in an essay that attempts to grab the reader's attention so that they want to read on.

What is the most commonly used hook in React? ›

The useState hook is the most basic and useful React hook. Like other built-in hooks, this hook must be imported from react to be used in our application. To initialize the state, we must declare both the state and its updater function and pass an initial value.

What are the rules for hooks in React? ›

Don't call Hooks inside loops, conditions, or nested functions. Instead, always use Hooks at the top level of your React function, before any early returns. By following this rule, you ensure that Hooks are called in the same order each time a component renders.

Does useState run on every render? ›

Every time React re-renders the component, useState(initialState) is executed.

What is the best practice to use function in useState hook? ›

Best Practices With React Hooks
  • Only Call Hooks From React Functions. You should only call React Hooks from React functions. ...
  • Use Only One useEffect Hook. If you're using the useEffect hook, you should only use one per component. ...
  • Use Hooks at the Top Level. ...
  • Don't Overuse Hooks.
Oct 25, 2022

Is useState hook synchronous or asynchronous? ›

The “useState” set method is asynchronous; hence, the updates are not reflected immediately.

How many times can a useState () hook be called inside a component? ›

Note: Remember that variables normally disappear when a function exits, but React keeps state variables, so the count variable will be preserved. Using the useState Hook, you can declare any type of state variable. The Hook can also be used multiple times in a single component.

Is it OK to use multiple useState? ›

You can use useState multiple times. In fact it's even recommended in the React docs.

Can you use useState twice? ›

You can use the State Hook more than once in a single component: function ExampleWithManyStates() { // Declare multiple state variables! const [age, setAge] = useState(42); const [fruit, setFruit] = useState('banana'); const [todos, setTodos] = useState([{ text: 'Learn Hooks' }]); // ... }

What is the difference between useEffect and useState? ›

Q: What is the difference between useState and useEffect? A: useState is a hook used to manage state in functional components, while useEffect is a hook used to manage side effects (like fetching data, setting up event listeners, or updating the DOM) in functional components.

What is the difference between useState and React useState? ›

The difference is that useState returns the current state and has an updater function that updates the state. While useRef returns an object, doesn't cause components to re-render, and it's used to reference DOM elements.

What is the difference between useEffect and useState in React? ›

The useState hook is used for storing variables that are part of your application's state and will change as the user interacts with your website. The useEffect hook allows components to react to lifecycle events such as mounting to the DOM, re-rendering, and unmounting.

How many hooks are in React? ›

Hooks help write less coding functionality in React. React version 18 provides 15 hooks for developers. With 15 hooks, you achieve similar functionality to a class-based component. All hooks are provided by the React team.

What is the disadvantage of hooks in React? ›

Hooks are usually used for application logic, yet they cannot be called directly. Instead, they rely solely on property change but without the ability to actually see what was changed. These types of change-tracking hooks can be built, but they only magnify the problems in the long run.

What does useState return? ›

useState accepts an initial state and returns two values: The current state. A function that updates the state.

What are the 5 types of hooks? ›

5 examples of essay hooks
  • 1 Statistic hook. The statistic hook gives your audience a true and hard fact to latch onto from the get-go. ...
  • 2 Quotation hook. ...
  • 3 Anecdotal hook. ...
  • 4 Question hook. ...
  • 5 Statement hook.
Jan 14, 2021

What are the rules of hooks? ›

There are 3 rules for hooks:
  • Hooks can only be called inside React function components.
  • Hooks can only be called at the top level of a component.
  • Hooks cannot be conditional.

What are some good hook examples? ›

63 lovely hook sentences.
  • I lost my arm on my last trip home. ...
  • A screaming comes across the sky. ...
  • It began the usual way, in the bathroom of the Lassimo Hotel. ...
  • Miss Brooke had that kind of beauty which seems to be thrown into relief by poor dress. ...
  • We slept in what once had been the gymnasium. ...
  • It was love at first sight.
May 20, 2019

What are Hooks in React for dummies? ›

What are React Hooks? Hooks are built-in React functions introduced in React version 16.8. They allow you to use features of the React library like lifecycle methods, state, and context in functional components without having to worry about rewriting it to a class. Each React Hook name is prefixed with the word "use" .

What is the difference between React and hook? ›

React is a library that helps us create interactive UIs in the browser. Hooks are a tool within React that provides ways to manage state and react to changes within our application. React Hooks are not a special library—they're just another tool built into React since version 16.8.

When should I create a React hook? ›

When would you use React custom Hooks? If you have one or multiple React hooks that will be used at multiple locations in a code, you should use custom React JS hooks. This helps in making the code more readable and make the code clean.

Are React Hooks difficult? ›

React hooks - easy to learn, hard to master

They're quite easy to get started with, but they're challenging to master properly – you have to learn to think a bit differently compared to React's traditional class components and lifecycle hooks, and there are certain rules that you have to follow.

Does useState have a callback? ›

We cannot use callback directly in the useState hook. To use callback in the useState hook, we need to use the useEffect hook that triggers after state update and call the function after that. We need to pass state in the useEffect Dependency Array.

What can you put in useState? ›

In class components, the state was always an object, and you could store multiple values in that object. But with hooks, the state can be any type you want – you can useState with an array, useState an object, a number, a boolean, a string, whatever you need.

Is useState only called once? ›

Remember that useState is stateful (read more about useState). It only uses the initial state once, the first time it renders. After that it's ignored. So it's safe to pass a transient value, like a prop that might change or some other variable.

What is the purpose of useState when and why will you use it? ›

useState can be used to toggle between two values, usually true and false , in order to toggle a flag, such as the display mode: import { useState } from 'react'; import classes from './UseCaseToggle.

What is the difference between signal and useState? ›

Conclusion. A signal is a way to store state in an application, similar to useState() in React. However, the key difference is that signals return a getter and a setter, whereas non-reactive systems return only a value and a setter.

How to set two values in useState? ›

  1. Step 1: import useState and set initial values. initial values will be an object. ...
  2. Step 2: add two input box. values of input box will be data. ...
  3. Step 3: adding OnChange event to each input box. each input box will have onChange event, which will target to handleChange arrow function.
Mar 25, 2022

What is the alternative of useState hook? ›

useReducer may be used as an alternative to useState . It's ideal for complex state logic where there's a dependency on previous state values or a lot of state sub-values. Depending on your use case, you may find useReducer quite testable.

Does useState automatically merge updated objects? ›

Unlike the setState method found in class components, useState does not automatically merge update objects.

Which React hook is most similar to useState? ›

The useReducer Hook is used to store and update states, just like the useState Hook.

Can you pass a function to useState hook? ›

With the useState hook, you can pass a function as an argument to initialize the state lazily. As discussed, the initial value is needed only once at the first render.

Why useState is called on every render? ›

Yes they are called on each render, in the first render it initialise a memory cell, on re-render it read the value of the current cell : When you call a Hook like useState(), it reads the current cell (or initializes it during the first render), and then moves the pointer to the next one.

What is the default value of useState? ›

useState, the default value will never change, because useState only called once, even the num props changed, the state will never change. Now with useEffect monitor on num props, the child component will get correct value from state. It is common mistake usually happened to new React developer.

Does the order of useState matter? ›

each useState (or hook) gets its own ordinal index by the order it is called with in your component. each component re render this array is addressed by the ordinal index of the useState to get the current state. and this is how the state is maintained between rerenders.

Can you pass useState to child? ›

You can pass the state as props, but if you want child components to alter state, then you can pass the setter from the useState directly to child components.

Should you pass useState as props? ›

Passing useState as props in another component is totally possible. But there's no benefit in doing so because you can always call useState by importing React at the top of your JavaScript code and call it in all of your components. This is a bad practice, and you should never use useState like this.

How do you avoid infinite loop in React useState? ›

To get rid of your infinite loop, simply use an empty dependency array like so: const [count, setCount] = useState(0); //only update the value of 'count' when component is first mounted useEffect(() => { setCount((count) => count + 1); }, []); This will tell React to run useEffect on the first render.

Does useState return an array? ›

useState is React Hook that allows you to add state to a functional component. It returns an array with two values: the current state and a function to update it. The Hook takes an initial state value as an argument and returns an updated state value whenever the setter function is called.

What is the best way to update useState? ›

The suggested way of updating useState is by functional update which to pass setState() a callback function and in this callback function we pass the current state at that instance e.g., setState(currentState => currentState + newValue) .

What is the difference between setState and useState? ›

Use setState to populate the values of the state object. With the example above the users userName and email is stored in the state similar to the string version we talked about above. When we want to use the useState hook for an object we are going to initialize it to an empty object useState({}) .

Does useState cause a rerender? ›

In a React component, useState and useReducer can cause your component to re-render each time there is a call to the update functions. In this article, you will find out how to use the useRef() hook to keep track of variables without causing re-renders, and how to enforce the re-rendering of React Components.

Is useState hook asynchronous? ›

The “useState” set method is asynchronous; hence, the updates are not reflected immediately.

What is useState in React interview questions? ›

useState is one of the built-in React hooks. It allows you to track the state in a functional component in React. The term state refers to data or properties that need to be tracked.

What is the difference between useEffect () and useState ()? ›

Q: What is the difference between useState and useEffect? A: useState is a hook used to manage state in functional components, while useEffect is a hook used to manage side effects (like fetching data, setting up event listeners, or updating the DOM) in functional components.

What is the difference between useEffect and useState Hooks in React? ›

The useState hook is used for storing variables that are part of your application's state and will change as the user interacts with your website. The useEffect hook allows components to react to lifecycle events such as mounting to the DOM, re-rendering, and unmounting.

Why is useState important? ›

The useState Hook can be used to keep track of strings, numbers, booleans, arrays, objects, and any combination of these! We could create multiple state Hooks to track individual values.

What is the difference between props and useState? ›

The difference comes in which component the data are owned. State is owned locally and the component itself updates it. Props are owned and read-only by a parent. Props can be changed only if an upstream shift is caused by a callback function passed on to the child.

What are the types of useState? ›

The useState hook can set primitive types in the application state. The primitive types include number , string , and boolean .

Can we pass callback in useState? ›

We cannot use callback directly in the useState hook. To use callback in the useState hook, we need to use the useEffect hook that triggers after state update and call the function after that. We need to pass state in the useEffect Dependency Array.

Is useState called on every render? ›

Yes they are called on each render, in the first render it initialise a memory cell, on re-render it read the value of the current cell : When you call a Hook like useState(), it reads the current cell (or initializes it during the first render), and then moves the pointer to the next one.

Is useEffect called after useState? ›

useEffect is called after each render and when setState is used inside of it, it will cause the component to re-render which will call useEffect and so on and so on.

Is useState mutable or immutable? ›

This is because the useState callback expects a new value to be returned in order for the component to rerender. You might be asking “The value does change in the example, why does react not treat it as 'new'?”. The answer to this is that objects in javascript are immutable.

Videos

1. 10 React Hooks Explained // Plus Build your own from Scratch
(Fireship)
2. useState in 12 minutes | React hooks for beginners
(Break The Code)
3. React Hooks: A Complete Introduction
(Harry Wolff)
4. useState hook in React – Introduction Tutorial for Beginners
(OpenJavaScript)
5. React useState Hook | Learn ReactJS
(Dave Gray)
6. React Hooks Course - All React Hooks Explained
(PedroTech)

References

Top Articles
Latest Posts
Article information

Author: Jamar Nader

Last Updated: 10/07/2023

Views: 5965

Rating: 4.4 / 5 (55 voted)

Reviews: 94% of readers found this page helpful

Author information

Name: Jamar Nader

Birthday: 1995-02-28

Address: Apt. 536 6162 Reichel Greens, Port Zackaryside, CT 22682-9804

Phone: +9958384818317

Job: IT Representative

Hobby: Scrapbooking, Hiking, Hunting, Kite flying, Blacksmithing, Video gaming, Foraging

Introduction: My name is Jamar Nader, I am a fine, shiny, colorful, bright, nice, perfect, curious person who loves writing and wants to share my knowledge and understanding with you.