В настоящее время я создаю компонент реагирования на уведомления и пытаюсь выяснить логику его закрытия / автоматического закрытия по истечении заданного периода времени.
По существу - после отображения уведомления запускается функция autoCloseAction()
. Если через 5 секунд пользователь завис в уведомлении, closeAction()
не вызывается.
Однако, это не так твердо, как я надеялся. Пользователь должен находиться на отметке 5 секунд для closeAction dispatch
. Что имеет смысл, когда вы смотрите на код.
Также - Если уведомление принудительно закрыто, нажав кнопку «x» - Тайм-аут все еще продолжается. Поэтому, если пользователь достаточно быстр, чтобы открыть другое уведомление, он может закрыться почти сразу после истечения времени ожидания.
Так что я думаю, что я ищу способ отменить мои рассылки или переопределить мои рассылки, чтобы предотвратить столкновения.
Любая помощь была бы очень полезна, поскольку я изо всех сил стараюсь обернуть голову вокруг этого сценария, в частности!
Большое спасибо!
export function openAction() {
return dispatch => {
dispatch([{ type: OPEN }, autoCloseAction()]);
};
}
export function closeAction() {
return {
type: CLOSE
};
}
export function autoCloseAction() {
return dispatch => {
dispatch({ type: AUTO_CLOSE });
setTimeout(() => {
if (!store.getState().mouseIn) {
dispatch(closeAction());
}
}, 5000);
};
}