我想实现一个通知系统,该通知系统在用户发出API请求后创建一条消息。但是,我不想在屏幕上创建多个消息,并且想要取消以前的消息,而只显示最新的消息。最近了解了thunk及其用法,并想知道是否可以取消setTimeout或有更好的方法来实现它。
这是我计划使用的粗俗消息。
export const startNotification = (message) => {
return dispatch => {
setTimeout(() => {dispatch(notificationMessage(message))}, 5000);
};
};
我不确定解决此问题的方法。我想到的一种方法是更新我的reducer以处理多条消息,但这似乎会使reducer过于复杂。理想情况下,我想取消所有现有的超时,然后再次调用函数。有没有一种方法可以实现这一目标,或者有比我想要实现的更好的选择?
答案 0 :(得分:0)
setTimeout()
返回一个可以用clearTimeout()
取消的句柄,所以这是一个选择。
但是,我建议清除reducer中的先前消息。每当您的Notification Reducer收到新消息时,它都可以摆脱其他任何消息。
如果您确实使用了clearTimeout()
,则可以在https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/clearTimeout上找到有关它的更多信息