Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Menghantar Tindakan Redux dengan Tamat Masa?

Bagaimana untuk Menghantar Tindakan Redux dengan Tamat Masa?

Linda Hamilton
Lepaskan: 2024-12-06 20:10:17
asal
625 orang telah melayarinya

How to Dispatch Redux Actions with Timeouts?

Menghantar Tindakan Redux dengan Tamat Masa

Masalah

Andaikan anda mempunyai aplikasi Redux yang mengurus pemberitahuan, memaparkan mesej seperti ralat atau makluman bermaklumat. Anda ingin mengetepikan pemberitahuan ini secara automatik selepas masa tertentu, katakan 5 saat.

Penyelesaian: Kod Async Sebaris

Pendekatan paling mudah ialah menggunakan setTimeout secara terus:

store.dispatch({ type: 'SHOW_NOTIFICATION', text: 'You logged in.' });
setTimeout(() => {
  store.dispatch({ type: 'HIDE_NOTIFICATION' });
}, 5000);
Salin selepas log masuk

Penyelesaian: Mengekstrak Async Action Creator

Untuk mengelakkan pertindihan dan keadaan perlumbaan, pertimbangkan untuk mengekstrak tindakan pencipta:

function showNotificationWithTimeout(dispatch, text) {
  const id = nextNotificationId++;
  dispatch(showNotification(id, text));

  setTimeout(() => {
    dispatch(hideNotification(id));
  }, 5000);
}
Salin selepas log masuk

Kemudian gunakannya dalam komponen:

showNotificationWithTimeout(this.props.dispatch, 'You just logged in.');
Salin selepas log masuk

Penyelesaian: Menggunakan Thunk Middleware

Thunk middleware memberikan lebih fleksibiliti. Ia membolehkan anda menghantar fungsi yang mengembalikan tindakan:

export function showNotificationWithTimeout(text) {
  return function (dispatch) {
    const id = nextNotificationId++;
    dispatch(showNotification(id, text));

    setTimeout(() => {
      dispatch(hideNotification(id));
    }, 5000);
  };
}
Salin selepas log masuk

Anda kemudiannya boleh menghantar pencipta tindakan thunk secara terus:

this.props.dispatch(showNotificationWithTimeout('You just logged in.'));
Salin selepas log masuk

Keadaan Membaca dalam Thunks

Thunks juga membolehkan anda membaca keadaan semasa kedai:

export function showNotificationWithTimeout(text) {
  return function (dispatch, getState) {
    if (!getState().areNotificationsEnabled) {
      return;
    }

    // ...
  };
}
Salin selepas log masuk

Cadangan

Gunakan pendekatan paling mudah yang memenuhi keperluan anda. Thunks menyediakan keupayaan async lanjutan tetapi mungkin tidak diperlukan dalam semua kes.

Atas ialah kandungan terperinci Bagaimana untuk Menghantar Tindakan Redux dengan Tamat Masa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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