【问题标题】:Creating a countdown timer with Redux使用 Redux 创建倒数计时器
【发布时间】:2018-02-21 16:37:34
【问题描述】:

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

我认为如何使用 Redux 完成此任务是这样的:

  1. 触发倒计时。
  2. 每隔一秒,TIMER_TICK 操作类型就会发送到减速器。
  3. 当达到持续时间值(以秒为单位)时,应清除timer
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)。有什么建议我如何/在哪里解决这个问题?

【问题讨论】:

    标签: javascript redux redux-thunk


    【解决方案1】:

    这样的?

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

    【讨论】:

    • 我认为最好将计时器的状态存储在应用程序状态中。用initialState 更新了问题以显示这一点。
    • @FellowStranger 现在怎么样?
    • 嗯,不幸的是 count 没有在 setInterval 函数中更新 - 因此,count 检查永远不会通过.. 我试图在函数内部调用 getState() 但是getState 似乎也没有获得最新状态..
    • 你在reducer中更新count吗?
    • 看准了!我的错误:D
    猜你喜欢
    • 2019-07-10
    • 2015-11-13
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多