Обработка подсостояния, недоступного (созданного компонентом в маршрутизаторе) при создании селектора
Я унаследовал реактивно-шаблонный проект. Мой опыт работы с React/REDUX ограничен, но я проделал долгий путь, просто экстраполировав код примера и то, что оставил мне предыдущий разработчик.
Однако я столкнулся с проблемой, которую считаю нужной прояснить. В частности, правильно ли то, что я делаю. Я подозреваю, что это может быть не потому, что мне приходится проверять наличие состояния в селекторе. Код запаха!
В моем App.js я ссылаюсь на следующие селекторы
const mapStateToProps = createStructuredSelector({
app: makeSelectApp(),
minimumSelectionMade: minimumSelectionMade()
});
Второй из которых создается в selectors.js (из App.js)
const itemsDomain = (state) => state.get('items');
const minimumSelectionMade = () => createSelector(
itemsDomain,
(substate) => substate !== undefined ? substate.get("minimumSelectionMade") : false
);
И я делаю это, потому что в другом месте в моем App.js я иду
<Navigator nextDisabled={!this.props.minimumSelectionMade}/>
Таким образом, линия, которая вызывает мое подозрение
(substate) => substate !== undefined ? substate.get("minimumSelectionMade") : false);
Это кажется неуклюжим и, конечно, не масштабируемым, и если я не проверю неопределенность, мое приложение даже не выйдет из первой базы, подсостояние равно нулю и
<Navigator nextDisabled={!this.props.minimumSelectionMade}/>
создает ошибку
Я предполагаю, что это происходит, потому что в момент, когда App / selectors.js запрашивает state.get ('items'), его просто не существует.
Правильно ли я поступаю, а если нет, то каков правильный подход?