使用Redux创建倒数计时器

时间:2018-02-21 16:37:35

标签: javascript redux redux-thunk

我想创建一个计时器,该计时器将指示要显示给定持续时间值的闪存消息(“已保存!”),例如: 30秒。

我认为如何使用Redux实现这一目标是这样的:

  1. 倒计时结束。
  2. 每秒,TIMER_TICK操作类型都会发送到reducer。
  3. 达到持续时间值(以秒为单位)时,应清除timer
  4. const initialState = {
      count: 0,
      timerOn: false,
    }
    
    const tick = () => ({ type: TIMER_TICK });
    
    let timer = null;
    
    export const startFlashMessageTimer = () => dispatch => {
      clearInterval(timer);
      timer = setInterval(() => dispatch(tick()), 1000);
    }
    

    但我仍然坚持在哪里放置检查是否达到计数值的逻辑(在这种情况下为30)。有任何建议我如何/在哪里解决这个问题?

1 个答案:

答案 0 :(得分:1)

这样的东西?

export const startFlashMessageTimer = () => (dispatch, getState) => {
  let timer = null;
  clearInterval(timer);
  timer = setInterval(() => {
      dispatch(tick());
      const { count } = getState();
      if (count >= 5) { clearInterval(timer) }
  }, 1000);
}