Как создать 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
Как исправить?