React 18

Last Updated: 12/3/2023

Showing a Loading Indicator

  • Define state
const [isLoading, setLoading] = useState(false);
  • Set isLoading
useEffect(() => {
    const controller = new AbortController();
    setLoading(true);
    axios
      .get<User[]>("https://jsonplaceholder.typicode.com/users", {
        signal: controller.signal,
      })
      .then((res) => {
        setUsers(res.data);
        setLoading(false);
      })
      .catch((err) => {
        if (err instanceof CanceledError) return;
        setError(err.message);
        setLoading(false);
      });

    return () => {
      controller.abort();
    };
  }, []);
  • Show Indicator
{isLoading && <div className="spinner-border"></div>}