React useState

useState is a React Hook that lets you add a state variable to your component.

useState simple counter example


import { useState } from "react";



function CounterPage() {

  const [count, setCount] = useState(0);



  const decrementCount = () => {

    setCount((prevCount) => prevCount - 1);

  };



  const incrementCount = () => {

    setCount((prevCount) => prevCount + 1);

  };



  return (

    <section className="counter-page">

      <p>Count: {count}</p>

      <button onClick={decrementCount}>Decrement</button>

      <button onClick={incrementCount}>Increment</button>

    </section>

  );

}



export default CounterPage;

We cannot use short version because it accesses old count value.

So this code would increase counter only once.


setCount(count + 1);

setCount(count + 1);

PostList example:


const PostList = ({ posts }) => {

  return (

    <div>

      {posts.map((post, index) => (

        <div key={index}>

          <h3>{post.title}</h3>

          <div>{post.body}</div>

        </div>

      ))}

    </div>

  );

};

export default PostList;



// Usage

import { useState, useEffect } from 'react';

import axios from 'axios';

const App = () => {

  const [posts, setPosts] = useState([]);

  const [loading, setLoading] = useState(true);



  useEffect(() => {

    axios.get('https://site.com/posts')

      .then(response => {

        setPosts(response.data);

        setLoading(false);

      })

      .catch(error => {

        console.error('Error:', error);

        setLoading(false);

      });

    /*fetch('https://site.com/posts')

      .then(response => response.json())

      .then(data => setPosts(data))

      .catch(error => console.error(error));*/

  }, []);



  return (

    <div>{loading ? <p>Loading...</p> : <PostList posts={posts} />}</div>

  );

};

export default App;

Leave a Comment