Kait useReducer adalah salah satu opsi terbaik untuk manajemen status di React. Awali perjalanan Anda dengan useReducer Hook menggunakan panduan ini.

Manajemen status sangat penting dalam pengembangan React, berfungsi sebagai landasan untuk menangani dan memperbarui data di antarmuka pengguna. Bereaksi useState Hook memberikan pendekatan langsung untuk mengelola keadaan, tetapi menjadi rumit dengan keadaan yang kompleks. Di situlah useReducer Kait masuk.

Itu useReducer Hook menawarkan metodologi terstruktur untuk mengelola status dan transisi yang kompleks. Merangkul useReducer Hook membuka fleksibilitas dan efisiensi, menghasilkan kode yang lebih bersih.

Memahami Kait useReducer

Itu useReducer Hook adalah fitur bawaan yang disediakan oleh React yang merampingkan manajemen status dengan mengikuti prinsip pola peredam. Ini menawarkan Anda alternatif yang terorganisir dan dapat diskalakan untuk useState Hook, sangat cocok untuk menangani keadaan kompleks.

Dengan memanfaatkan useReducer Hook, Anda dapat menggabungkan status dan transisinya dalam satu fungsi peredam.

instagram viewer

Fungsi ini mengambil keadaan saat ini dan tindakan sebagai masukan, selanjutnya menghasilkan keadaan baru. Ini beroperasi dengan prinsip yang sama dengan fungsi peredam yang digunakan dalam JavaScript Array.prototype.reduce() metode.

Sintaks dan Contoh Penggunaan dari useReducer Hook

Sintaks untuk menggunakan the useReducer Kait adalah sebagai berikut:

const [status, pengiriman] = useReducer (reducer, initialState);

Itu useReducer fungsi menerima dua argumen:

  • peredam (fungsi): Menentukan cara status harus diperbarui berdasarkan status saat ini dan tindakan yang dikirim.
  • kondisi awal (apa saja): Mewakili nilai status awal untuk komponen.

Setelah doa, the useReducer Hook mengembalikan array yang terdiri dari dua elemen:

  • negara bagian (apa saja): Menunjukkan nilai status saat ini.
  • pengiriman (fungsi): Fungsi ini memungkinkan pengiriman tindakan untuk memperbarui status.

Perhatikan contoh di bawah ini yang mengilustrasikan penggunaan the useReducer Kaitkan dalam mengelola penghitung sederhana:

impor Bereaksi, { useReducer } dari'reaksi';
const keadaan awal = 0;

const peredam = (negara, tindakan) => {
mengalihkan (tipe aksi) {
kasus'kenaikan':
kembali negara bagian + 1;
kasus'pengurangan':
kembali negara - 1;
bawaan:
kembali negara;
}
};

const Penghitung = () => {
const [count, dispatch] = useReducer (reducer, initialState);
const handleIncrement = () => {
menugaskan({ jenis: 'kenaikan' });
};

const handleDecrement = () => {
menugaskan({ jenis: 'pengurangan' });
};

kembali (


};

Dari ilustrasi di atas, keadaan awal dari 0 didefinisikan bersama fungsi peredam yang bertanggung jawab untuk menangani dua jenis tindakan: kenaikan Dan pengurangan. Fungsi peredam mengubah status sesuai dengan tindakan yang ditentukan.

Dengan memanfaatkan useReducer Hook, status diinisialisasi, dan nilai status saat ini dan fungsi pengiriman diperoleh. Fungsi pengiriman selanjutnya digunakan untuk memicu pembaruan status setelah mengklik tombol masing-masing.

Membangun Fungsi Peredam

Untuk pemanfaatan optimal dari useReducer Hook, Anda dapat membuat fungsi peredam yang menjelaskan bagaimana keadaan harus diperbarui berdasarkan tindakan yang dikirim. Fungsi peredam ini menerima keadaan saat ini dan tindakan sebagai argumen dan mengembalikan keadaan baru.

Biasanya, fungsi peredam menggunakan pernyataan bersyarat switch untuk menangani berbagai jenis tindakan dan melakukan modifikasi keadaan yang sesuai.

Pertimbangkan contoh di bawah ini dari fungsi peredam yang digunakan untuk mengelola daftar todo:

const kondisi awal = [];

const peredam = (negara, tindakan) => {
mengalihkan (tipe aksi) {
kasus'menambahkan':
kembali [...status, tindakan.payload];
kasus'beralih':
kembali negara bagian.peta((melakukan) =>
todo.id action.payload? { ...melakukan, lengkap: !todo.selesai }: todo
);
kasus'menghapus':
kembali status.filter((melakukan) => todo.id !== aksi.payload);
bawaan:
kembali negara;
}
};

Dalam contoh di atas, fungsi peredam menangani tiga jenis tindakan yang berbeda: menambahkan, beralih, Dan menghapus. Setelah menerima menambahkan tindakan, itu menambahkan payload (item todo baru) ke negara Himpunan.

Dalam kasus beralih tindakan, itu bergantian lengkap properti item todo yang terkait dengan ID yang ditentukan. Itu menghapus tindakan, di sisi lain, menghilangkan item todo yang ditautkan ke ID yang disediakan dari larik status.

Jika tidak ada jenis tindakan yang sesuai, fungsi peredam mengembalikan keadaan saat ini tidak berubah.

Tindakan Pengiriman

Untuk melaksanakan pembaruan status yang difasilitasi oleh useReducer Hook, pengiriman tindakan menjadi sangat diperlukan. Tindakan mewakili objek JavaScript biasa yang menjelaskan jenis modifikasi status yang diinginkan.

Tanggung jawab untuk menangani tindakan ini dan menghasilkan keadaan selanjutnya terletak pada fungsi peredam.

Fungsi pengiriman, dilengkapi oleh useReducer Hook, digunakan untuk mengirim tindakan. Itu menerima objek tindakan sebagai argumen, sehingga memicu pembaruan status yang bersangkutan.

Dalam contoh sebelumnya, tindakan dikirim menggunakan sintaks pengiriman({type: 'actionType'}). Namun, dapat dibayangkan tindakan untuk mencakup data tambahan, yang dikenal sebagai muatan, yang memberikan wawasan lebih lanjut terkait pembaruan. Contohnya:

menugaskan({ jenis: 'menambahkan', muatan: { pengenal: 1, teks: 'Menyelesaikan pekerjaan rumah', lengkap: PALSU } });

Dalam skenario ini, menambahkan tindakan mencakup objek payload yang mengenkapsulasi rincian item todo baru untuk dimasukkan ke dalam status.

Mengelola Keadaan Kompleks Dengan useReducer

Kekuatan sebenarnya dari useReducer Hook terletak pada kapasitasnya untuk mengelola struktur keadaan yang rumit, yang mencakup banyak nilai yang saling berhubungan dan transisi keadaan yang rumit.

Dengan memusatkan logika negara dalam fungsi peredam, pengelolaan beragam jenis tindakan dan pemutakhiran negara secara sistematis menjadi usaha yang layak.

Pertimbangkan skenario di mana a formulir reaksi terdiri dari beberapa kolom input. Daripada mengelola setiap status input secara individual melalui useState, itu useReducer Hook dapat digunakan untuk mengelola keadaan formulir secara holistik.

Fungsi peredam dapat dengan mahir menangani tindakan yang berkaitan dengan modifikasi bidang tertentu dan validasi menyeluruh dari seluruh formulir.

const keadaan awal = {
nama: '',
surel: '',
kata sandi: '',
isFormValid: PALSU,
};

const peredam = (negara, tindakan) => {
mengalihkan (tipe aksi) {
kasus'perbaruiField':
kembali { ...status, [aksi.payload.bidang]: aksi.payload.nilai };
kasus'formulir validasi':
kembali { ...negara, isFormValid: aksi.payload };
bawaan:
kembali negara;
}
};

Dalam contoh, fungsi peredam melayani dua jenis tindakan yang berbeda: updateField Dan validasiForm. Itu updateField tindakan memfasilitasi modifikasi bidang tertentu dalam negara dengan memanfaatkan nilai yang diberikan.

Sebaliknya, validasiForm tindakan memperbarui isFormValid properti berdasarkan hasil validasi yang diberikan.

Dengan mempekerjakan useReducer Kait untuk mengelola status formulir, semua status dan tindakan yang terkait dikonsolidasikan dalam entitas tunggal, sehingga meningkatkan kemudahan pemahaman dan pemeliharaan.

Membandingkan useReducer Dengan Solusi Manajemen Negara Lain

walaupun useReducer Hook berdiri sebagai alat yang ampuh untuk manajemen negara, sangat penting untuk mengakui perbedaan dan pertukarannya jika dibandingkan dengan solusi manajemen negara alternatif dalam ekosistem React.

useState

Itu useState Hook cukup untuk mengelola status sederhana dan terisolasi di dalam sebuah komponen. Sintaksnya lebih ringkas dan lugas dibandingkan dengan useReducer. Meskipun demikian, untuk transisi keadaan atau keadaan yang rumit, useReducer memberikan pendekatan yang lebih terorganisir.

Redux

Redux mewakili perpustakaan manajemen negara terkemuka untuk aplikasi Bereaksi. Itu menganut pola peredam yang sama seperti useReducer, namun melengkapi fitur tambahan seperti penyimpanan terpusat, dukungan middleware, dan debugging perjalanan waktu.

Redux terbukti ideal untuk aplikasi berskala besar yang memerlukan persyaratan manajemen status yang rumit. Namun, untuk proyek yang lebih kecil atau kebutuhan pengelolaan negara yang lebih sederhana, useReducer dapat berfungsi sebagai alternatif yang ringan dan sederhana.

API Konteks

API Konteks React memungkinkan pembagian status di beberapa komponen tanpa menggunakan pengeboran penyangga. Setara dengan useReducer, itu dapat menghasilkan solusi manajemen negara terpusat.

Sedangkan kombinasi Context API dan useReducer membanggakan kekuatan yang cukup besar, ini dapat menimbulkan kompleksitas tambahan ketika disandingkan dengan pemanfaatan useReducer secara terpisah.

Context API paling baik digunakan ketika ada kebutuhan untuk berbagi status di tengah-tengah komponen yang sangat bersarang atau ketika berhadapan dengan hierarki komponen yang kompleks. Pemilihan solusi manajemen keadaan yang tepat bergantung pada persyaratan spesifik dari aplikasi yang ada.

Untuk proyek berukuran sedang, useReducer dapat terbukti menjadi alternatif yang efektif dan lebih sederhana untuk Redux atau Context API.

Melepaskan Kesederhanaan Pengelolaan Negara

Kait useReducer berfungsi sebagai instrumen ampuh untuk menyederhanakan manajemen status dalam aplikasi React. Dengan mengikuti prinsip-prinsip pola peredam, ia menawarkan pendekatan terstruktur dan terukur untuk menangani keadaan kompleks dan transisi keadaan.

Ketika digunakan bersamaan dengan useState Hook, useReducer dapat menjadi alternatif yang ringan untuk perpustakaan seperti Redux atau API Konteks, khususnya dalam konteks berukuran lebih kecil hingga menengah proyek.