С точки зрения передового опыта, глубоко вложенные объекты считаются хрупкими, потому что код, который зависит от этой структуры глубокого вложения, сломается, если эта структура вложений где-либо изменится.
Существует множество методов, позволяющих избегать глубоко вложенных объектов.Одним из них является «нормализация» ваших данных в виде набора плоских или почти плоских списков.См. «Нормализация формы состояния» в документации Redux.
Если вам нужно работать с вложенными данными, предполагая, что данные поступают из вашего состояния Redux, вы все равно можете отделить вложенную структуру от своей.код рендеринга, создав функцию селектор , которую вы вызываете в mapStateToProps()
.Обычно вы помещаете код селектора рядом с редуктором (возможно, в том же файле, что и редуктор).Когда вы изменяете форму состояния редукции путем изменения редуктора, вы затем обновляете селектор, чтобы отразить новую форму.Ваш код компонента дисплея и ваш mapStateToProps защищены от этих изменений и будут продолжать работать без изменений кода.
Ваш селектор будет выглядеть так:
export const Selectors = {
getInputValues: state => state.parent.props.input.values
}
Тогда ваш mapStateToProps()
будетвыглядеть так:
import { Selectors } from '../reducer'; // wherever your reducer is
const mapStateToProps = state => {
return {assignProducts: Selectors.getInputValues(state)}
}