Blogger Jateng

Manajemen State bawaan React: useState & useReducer

Manajemen state adalah konsep yang penting dalam aplikasi React, memastikan bahwa komponen-komponen di-render dan diperbarui secara efisien. Meskipun library eksternal seperti Redux dan MobX menyediakan solusi yang luas untuk manajemen state yang kompleks, React sendiri menawarkan hook bawaan untuk menangani state secara efektif: useState dan useReducer. Hooks ini menyederhanakan manajemen state lokal dan memungkinkan pengembang untuk menulis kode yang bersih dan mudah dipelihara. Pada artikel ini, kita akan mengeksplorasi useState dan useReducer, kasus penggunaannya, dan kapan harus memilih salah satunya.

Memahami useState

useState adalah hook manajemen state yang paling mudah dan paling banyak digunakan di React. Hook ini memungkinkan komponen fungsional dapat menggunakan dan memperbarui state tanpa menggunakan komponen kelas.

sumber: tasoskakour.com

Sintaks

import { useState } from 'react';


function Counter() {

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


  return (

    <div>

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

      <button onClick={() => setCount(count + 1)}>Increment</button>

    </div>

  );

}

Bagaimana useState Bekerja

  1. Inisialisasi: useState mengambil nilai awal sebagai masukan.
  2. Variabel State & Fungsi Updater: Fungsi ini mengembalikan sebuah array, elemen pertama dari array tersebut adalah variabel state, elemen kedua adalah fungsi yang memperbarui state.
  3. Merender Ulang: Memanggil fungsi updater akan memicu render ulang komponen dengan state yang telah diperbarui.

Kapan Menggunakan useState

  • Ketika Anda berurusan dengan state sederhana seperti angka, boolean, atau string.
  • Dalam situasi di mana pembaruan state sederhana dan tanpa banyak logika yang terlibat.
  • Ketika berurusan dengan perubahan berbasis UI, seperti ketika mengganti modal atau memperbarui beberapa input form.

Memahami useReducer

Meskipun useState cukup untuk manajemen state yang sederhana, useReducer berguna untuk transisi state yang kompleks. Fungsinya seperti Redux tetapi sudah terintegrasi dengan React.

Sintaks

import { useReducer } from 'react';

const initialState = { count: 0 };

function reducer(state, action) {
  switch (action.type) {
    case 'increment':
      return { count: state.count + 1 };
    case 'decrement':
      return { count: state.count - 1 };
    default:
      throw new Error('Unknown action type');
  }
}

function Counter() {
  const [state, dispatch] = useReducer(reducer, initialState);

  return (
    <div>
      <p>Count: {state.count}</p>
      <button onClick={() => dispatch({ type: 'increment' })}>Increment</button>
      <button onClick={() => dispatch({ type: 'decrement' })}>Decrement</button>
    </div>
  );
}

Bagaimana useReducer Bekerja

  1. Inisialisasi: useReducer menerima fungsi peredam dan status awal.
  2. Status & Pengiriman: Fungsi ini mengembalikan status saat ini dan fungsi pengiriman yang dapat digunakan untuk memperbarui status.
  3. Tindakan & Fungsi Peredam: Fungsi peredam menjelaskan transisi state berdasarkan jenis tindakan.

Kapan Menggunakan useReducer

  • Ketika Anda ingin mengelola logika state yang kompleks dengan beberapa sub-nilai.
  • Ketika state berikutnya bergantung pada state sebelumnya.
  • Saat menangani beberapa aksi yang memengaruhi state yang sama.
  • Ketika bekerja dengan manajemen state yang lebih terstruktur mirip dengan Redux. 

Memilih Antara useState dan useReducer

Fitur

  • Kompleksitas
  • Keterbacaan
  • Kinerja
  • Kasus Penggunaan
useState

  • Pembaruan status sederhana
  • Lebih bersih untuk negara bagian kecil
  • Efisien untuk pembaruan individual
  • Input formulir, sakelar, penghitung
useReducer
  • Logika keadaan yang kompleks
  • Lebih baik untuk logika terstruktur
  • Efisien untuk beberapa pembaruan terkait
  • Keranjang belanja, formulir dengan banyak bidang, status UI yang kompleks
Jika komponen Anda mengelola penghitung sederhana atau toggle boolean, useState adalah pilihan yang lebih baik. Namun, jika logika state Anda melibatkan beberapa variabel state dan transisi, useReducer membantu menjaga kode lebih terorganisir dan terukur.

Kesimpulan

Manajemen state bawaan React menggunakan useState dan useReducer menyediakan opsi yang fleksibel tergantung pada kompleksitas aplikasi Anda. useState sangat ideal untuk manajemen state lokal yang sederhana, sedangkan useReducer cocok untuk menangani logika state yang kompleks. Dengan memahami kedua hook tersebut, pengembang dapat menulis aplikasi React yang efisien dan mudah dipelihara tanpa bergantung pada pustaka manajemen state eksternal.