Я играю с простым приложением React Redux, которое увеличивает счетчик при каждом нажатии кнопки. Я тестирую два разных метода увеличения моего счетчика в моем Redux Reducer. Оба метода изменяют состояние в редукторе, однако один из этих методов не вызывает повторную визуализацию моего счетчика.
Вот редуктор, который приведет к перерисовке страницы:
const reducer = (state={speed: 0}, action) => {
if(action.type ==='INCREMENT_SPEED'){
state = {...state, speed: state.speed+=1
}
return state
}
и вот код, который функционирует, но не вызывает перерисовку страницы с правильным значением.
const reducer = (state={speed: 0}, action) => {
if(action.type ==='INCREMENT_SPEED'){
state.speed++
}
return state
}
Единственная разница заключается в том, как я обновляю состояние. Я предполагаю, что использование инкремента ++ в действительности является изменяющимся состоянием, которое не рассматривается как изменение и, следовательно, не приводит к отображению страницы.
Если это поможет, вот часть кода, которая добавляется в DOM:
render() {
return (
<div>
<p>SPEED: {this.props.reduxState.reducer.speed}</p>
</div>
)
}
}