Kit alat Redux: React Thunk dan React Saga.Belajar daripada Vishal Tiwari.

Patricia Arquette
Lepaskan: 2024-10-19 14:32:31
asal
286 orang telah melayarinya

Redux toolkit: React Thunk and React Saga.Learn from Vishal Tiwari.

React Thunk dan React Saga ialah perpustakaan middleware untuk mengendalikan kesan sampingan dalam aplikasi React, terutamanya untuk mengurus operasi tak segerak seperti panggilan API. Kedua-duanya biasanya digunakan dengan Redux tetapi mempunyai tujuan dan pendekatan yang sedikit berbeza.


React Thunk

1. Ikhtisar:

React Thunk ialah perisian tengah yang membolehkan anda menulis pencipta tindakan yang mengembalikan fungsi dan bukannya objek tindakan. Ini berguna untuk mengendalikan operasi tak segerak seperti permintaan API atau logik segerak yang kompleks (seperti penghantaran tindakan bersyarat). Fungsi yang dikembalikan menerima dispatch dan getState sebagai argumen, membolehkan anda menghantar tindakan lain atau mengakses keadaan semasa dalam fungsi.

2. Konsep Utama:

  • Middleware: Thunk ialah middleware yang memanjangkan keupayaan kedai untuk mengendalikan fungsi (iaitu, thunks).
  • Tindakan tak segerak: Dengan Thunk, anda boleh menangguhkan penghantaran tindakan atau menghantarnya secara bersyarat berdasarkan keadaan atau logik tertentu.
  • Mudah: Thunk agak mudah, menjadikannya mudah digunakan untuk kebanyakan kes penggunaan.

3. Cara ia Berfungsi:

  • Biasanya, pencipta tindakan mengembalikan objek JavaScript biasa (tindakan).
  • Dengan Thunk, pencipta tindakan boleh mengembalikan fungsi ("thunk") yang menerima penghantaran dan getState. Di dalam fungsi ini, anda boleh melakukan logik tak segerak (cth., mengambil data daripada API) dan kemudian menghantar tindakan sebenar.

4. Contoh:

Berikut ialah contoh asas cara anda menggunakan redux-thunk dalam apl React:

   // Action Creator with Thunk
   export const fetchUser = () => {
     return async (dispatch) => {
       dispatch({ type: 'FETCH_USER_REQUEST' });
       try {
         const response = await fetch('/api/user');
         const data = await response.json();
         dispatch({ type: 'FETCH_USER_SUCCESS', payload: data });
       } catch (error) {
         dispatch({ type: 'FETCH_USER_FAILURE', payload: error });
       }
     };
   };
Salin selepas log masuk
Salin selepas log masuk

5. Kelebihan Thunk:

  • Kesederhanaan: Thunk mudah difahami dan dilaksanakan.
  • Jejak kecil: Ia ringan dan tidak memerlukan konfigurasi yang rumit.
  • Kawalan langsung ke atas penghantaran: Anda mempunyai lebih kawalan ke atas masa dan cara tindakan dihantar.

6. Kelemahan:

  • Sukar untuk skala: Untuk aliran tak segerak yang kompleks, Thunk boleh menjadi kucar-kacir, dengan logik bersarang dan banyak panggilan penghantaran.
  • Kurang struktur: Thunk tidak menguatkuasakan struktur tertentu untuk menguruskan kesan sampingan, yang boleh menyebabkan kod tidak konsisten jika tidak dikendalikan dengan betul.

React Saga

1. Ikhtisar:

React Saga ialah perisian tengah yang membolehkan anda mengendalikan kesan sampingan dengan cara yang lebih teratur menggunakan fungsi penjana. Daripada mengembalikan fungsi seperti Thunk, ia menggunakan sistem "kesan" untuk mengurus operasi tak segerak dan mengawal aliran logik anda. Sagas ialah proses latar belakang yang berjalan lama yang boleh mendengar tindakan yang dihantar dan melakukan kesan sampingan seperti panggilan API, pengambilan data dan tugas lain.

2. Konsep Utama:

  • Fungsi penjana: Sagas dilaksanakan menggunakan fungsi penjana ES6 (fungsi*), yang membolehkan anda menulis kod tak segerak yang kelihatan segerak.
  • Pemerhati dan pekerja: Kisah sering dibahagikan kepada kisah "pemerhati" (yang mendengar tindakan yang dihantar) dan kisah "pekerja" (yang mengendalikan kesan sampingan).
  • Ambil, letak, panggil: Redux-Saga menyediakan pencipta kesan (ambil, letak, panggil, dll.) untuk mengawal masa untuk mencetuskan kesan sampingan, tindakan penghantaran dan memanggil API.

3. Cara ia Berfungsi:

  • Dengan Redux-Saga, anda menentukan saga (tugas latar belakang yang berjalan lama) yang bertanggungjawab untuk mengendalikan kesan sampingan.
  • Sagas biasanya ditulis sebagai fungsi penjana dan menghasilkan kesan seperti panggilan (untuk menggunakan fungsi) dan meletakkan (untuk menghantar tindakan).
  • Sagas juga boleh menunggu tindakan tertentu dengan mengambil atau mendengar sebarang tindakan dengan takeEvery atau takeLatest.

4. Contoh:

Berikut ialah contoh asas cara redux-saga boleh digunakan:

   // Action Creator with Thunk
   export const fetchUser = () => {
     return async (dispatch) => {
       dispatch({ type: 'FETCH_USER_REQUEST' });
       try {
         const response = await fetch('/api/user');
         const data = await response.json();
         dispatch({ type: 'FETCH_USER_SUCCESS', payload: data });
       } catch (error) {
         dispatch({ type: 'FETCH_USER_FAILURE', payload: error });
       }
     };
   };
Salin selepas log masuk
Salin selepas log masuk

5. Kelebihan Redux-Saga:

  • Lebih baik untuk kesan sampingan yang kompleks: Pendekatan berasaskan kesan Saga lebih berskala dan sesuai untuk mengurus aliran tak segerak yang kompleks (cth., menangani percubaan semula, nyahlantun atau panggilan API berlatarkan).
  • Boleh diuji: Sagas mudah diuji kerana ia dibina di sekeliling fungsi penjana.
  • Deklaratif: Penggunaan kesan menjadikannya lebih jelas kesan sampingan yang akan berlaku, menjadikan aliran lebih mudah diramal.
  • Pembatalan dan urutan: Saga memudahkan untuk membatalkan tugas yang sedang berjalan atau menguatkuasakan aliran urutan acara (seperti menunggu beberapa tindakan).

6. Kelemahan:

  • Keluk pembelajaran yang lebih curam: Menggunakan fungsi penjana dan corak saga keseluruhan boleh menjadi sukar bagi pemula untuk memahami.
  • Overhead: Untuk aplikasi kecil, ia mungkin terasa seperti berlebihan berbanding penyelesaian yang lebih mudah seperti Thunk.
  • Verbose: Sagas cenderung melibatkan lebih banyak kod boilerplate berbanding Thunk.

Perbandingan: React Thunk lwn. React Saga

Aspek
Aspect React Thunk React Saga
Concept Returns functions in action creators Uses generator functions for side effects
Learning curve Easier to learn and use Higher learning curve due to generators
Asynchronous flow Handles simple async logic Better for complex async workflows
Code structure Less structure, can get messy in large apps Provides a clear, structured approach
Testing Testing can be more challenging Easier to test because of generators
Use cases Simple async logic, API requests Complex flows (e.g., sequences, retries)
Performance Lightweight More powerful, but slightly more overhead
React Thunk React Saga Konsep Mengembalikan fungsi dalam pencipta tindakan Menggunakan fungsi penjana untuk kesan sampingan Keluk pembelajaran Lebih mudah dipelajari dan digunakan Keluk pembelajaran yang lebih tinggi disebabkan oleh penjana Aliran tak segerak Mengendalikan logik async ringkas Lebih baik untuk aliran kerja tak segerak yang kompleks Struktur kod Kurang struktur, boleh menjadi kucar-kacir dalam apl besar Menyediakan pendekatan yang jelas dan berstruktur Ujian Ujian boleh menjadi lebih mencabar Lebih mudah untuk diuji kerana penjana Kes penggunaan Logik async mudah, permintaan API Aliran kompleks (cth., jujukan, cuba semula) Prestasi Ringan Lebih berkuasa, tetapi lebih tinggi sedikit table>

Bila Pakai Yang Mana?

  • Gunakan React Thunk jika:

    • Aplikasi anda mempunyai keperluan tak segerak yang agak mudah, seperti permintaan API asas dan penghantaran berdasarkan syarat.
    • Anda mahukan penyelesaian yang ringan dan mudah difahami tanpa banyak boilerplate.
  • Gunakan React Saga jika:

    • Anda perlu mengurus aliran tak segerak yang lebih kompleks, seperti percubaan semula, penjujukan tindakan, keadaan perlumbaan atau berbilang tugasan yang bergantung antara satu sama lain.
    • Anda lebih suka pendekatan deklaratif dan mahukan kawalan yang lebih baik ke atas kesan sampingan.
    • Apl anda memerlukan kebolehujian yang lebih baik dan kebolehselenggaraan kod dalam jangka panjang.

Atas ialah kandungan terperinci Kit alat Redux: React Thunk dan React Saga.Belajar daripada Vishal Tiwari.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!