假設您有一個 Redux 應用程式來管理通知、顯示錯誤或訊息警報等訊息。您希望在一定時間(例如 5 秒)後自動關閉這些通知。
最簡單的方法是直接使用 setTimeout:
store.dispatch({ type: 'SHOW_NOTIFICATION', text: 'You logged in.' }); setTimeout(() => { store.dispatch({ type: 'HIDE_NOTIFICATION' }); }, 5000);
為了避免重複和競爭條件,請考慮提取操作創建者:
function showNotificationWithTimeout(dispatch, text) { const id = nextNotificationId++; dispatch(showNotification(id, text)); setTimeout(() => { dispatch(hideNotification(id)); }, 5000); }
然後在組件中使用:
showNotificationWithTimeout(this.props.dispatch, 'You just logged in.');
Thunk 中介軟體提供了更大的彈性。它使您能夠調度返回操作的函數:
export function showNotificationWithTimeout(text) { return function (dispatch) { const id = nextNotificationId++; dispatch(showNotification(id, text)); setTimeout(() => { dispatch(hideNotification(id)); }, 5000); }; }
然後您可以直接調度 thunk 操作創建者:
this.props.dispatch(showNotificationWithTimeout('You just logged in.'));
Thunkunk也是允許您讀取當前狀態store:
export function showNotificationWithTimeout(text) { return function (dispatch, getState) { if (!getState().areNotificationsEnabled) { return; } // ... }; }
使用滿足您需求的最簡單方法。 Thunk 提供了高級非同步功能,但可能並非在所有情況下都是必需的。
以上是如何在超時情況下調度 Redux 操作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!