Я получаю частые обновления своего состояния, что вызывает нежелательную повторную визуализацию в компонентах, которые не имеют доступа к изменяющимся свойствам состояния.
Компоненты A и B создаются одинаково, компонент A имеет ключи значений ['скорость', 'время'], а компонент В не имеет ключей значений [].
Когда скорость и время обновляются, к каждому массиву добавляется еще одно значение, компонент A перерисовывается, как и ожидалось, но компонент B также перерисовывается.
Я думаю, что это происходит из-за изменения ввода valuesSelector для ссылки makeValuesSelector? Хотя значение представляет собой пустой массив.
Есть ли способ предотвратить повторный рендеринг компонента B в этом сценарии?
Состояние
{
speed: [ 5, 4, 6],
time: [ 1, 2, 3]
}
ValueKeys
[ 'speed', 'time']
Селектор
const valuesSelector = state => state.values;
const keysSelector= (state, props) => props.valueKeys;
const makeValuesSelector = () =>
createSelector(
[valuesSelector, keysSelector],
(values, keys) => {
let usedValues = {};
keys.forEach(key => {
if (values[key]) {
usedValues[key] = values[key];
}
});
return usedValues;
}
);
Составная часть
const makeMapStateToProps = () => {
const valuesSelector = makeValuesSelector();
const mapStateToProps = (state, props) => ({
values: valuesSelector(state, props),
});
return mapStateToProps;
};
makeMapStateToProps
как в A, так и в B? - person Tomer   schedule 27.05.2019