не уверен, если уместно здесь.
я есть действие и редуктор, который обновляет глобальный счетчик. Это действие запускается на быстром интервале. Редуктор возвращает новую копию состояния для каждого действия. Редуктор выглядит так:
import { handleActions } from 'redux-actions';
import { sceneTick } from './actions';
export default (state, action) => handleActions({
[sceneTick]: (state, action) => {
return {
...state,
loop: action.payload,
}
},
Я используюreact-redux
«sconnect
метод на различных компонентах React. Не все компоненты заботятся об этом счетчике петель. Поскольку я возвращаю новое состояние в редукторе на каждом тике, все компоненты подписаныconnect
получить ихmapDispatchToProps
выполняется, что вызывает ненужные вызовы рендеринга React.
Один из этих компонентов выглядит так:
const mapStateToProps = (state, props) => {
return {
viewport: state.viewport,
assets: state.assets,
};
};
export default connect(mapStateToProps, {})(Component)
Хотя этот компонент не зависит отstate.loop
это вызвано, чтобы повторно сделать. Это вызывает повторную визуализацию, избыточную визуализацию, многократную визуализацию, ненужную визуализацию, проблемы с производительностью и неожиданное поведение компонентов, которые не требуют повторной визуализации.
Обновить Я должен также, возможно, добавить, что яне с помощьюcombineReducers
здесь и все редукторы применяются до полного состояния. Не уверен, если это уместно.