Как создать action для таймера в React Redux?

Есть таймер, который запускается через setInterval в action в редюсере:

case 'HANDLE_START': {
        return {
            ...state,
            hide: false,
            timer: Math.floor(state.value),
            timerIsTicking: true,
            intervalId: setInterval(()=>{
                this.props.handleTick() // проблема в этой строке!
            },1000)
        }
    }

По идее в момент нажатия кнопки, каждую секунду должен запускаться данный action:

case 'HANDLE_TICK': {

        if (state.timer < 1) {
            clearInterval(state.intervalId);
            return {
                ...state,
                intervalId: 0,
            }
        } else {
            return {
                ...state,
                timer: state.timer - 1
            }
        }
    }

Всем этим процессом управляет диспатч:

function mapDispatchToProps(dispatch) {
    return {
        handleStart: () => dispatch({type: 'HANDLE_START'}),
        handleTick: () => dispatch({type: 'HANDLE_TICK'}),
    }
}

Проблема в этой строке:

intervalId: setInterval(()=>{
                this.props.handleTick() // проблема в этой строке!
            },1000)

Надо как-то указать setInterval, какой action выполнять. Но как это сделать? Сейчас всё приложение вылетает с ошибкой:

TypeError: Cannot read property 'props' of undefined

Как исправить?


Ответы (0 шт):