Вопрос архитектуры приложения. Предположим, что имеется много компонентов (look at the picture) (main) на странице. Что лучше использовать для переключения основных компонентов детей (активные/неактивные)? И страницы (1, 2, 3, далее)? Могу ли я использовать реактивный маршрутизатор для обеих задач? P.S .: Я использую ReactJS для рендерингаReact, Redux, React-Router?
ответ
Я бы не использовал реактивный маршрутизатор для фильтрации результатов. Поскольку вы используете Redux, вы можете разделить свои редукторы на главные разделы и сохранить состояние активного/неактивного, а также текущую страницу на каждый раздел в одном магазине.
Я думаю, что на этой странице вам не нужно использовать ретранслятор.
Вы должны контролировать состояние (активные/не активно, 1,2,3, следующего) с помощью редуктора, так же, как показано ниже:
case NEXT_PAGE:
return {...state, list:[{active:0, ...others},{active:1, ...others},...], page: 1};
И вы можете получить данные, которые вы хотите отобразить на этом страницы из реквизита.
mapStateToProps(state) {
return {
list: state.xxx.list,
currentPage: state.xxx.page
totalPage: state.xxx.total
}
}
Ключ предназначен для использования. Если у вас есть следующие варианты использования:
- Пользователь скопировать вставить ссылку отфильтрованного результата и страницы и делиться с другими
- пользователя закладкой отфильтрованной страницей результатов, и вернуться к нему позже.
Тогда, безусловно, я бы сказал, что используйте маршрутизатор.
Вы можете иметь маршрут как это: <Route path="main/:status/:page" component={Main}/>
Тогда объект PARAMS будет впрыскивается в качестве реквизита для вашего главного компонента.
Если пользователь нажимает на кнопки, вы должны использовать push
от реактивного маршрутизатора, чтобы изменить маршрут или просто Link
от реагирующего маршрутизатора. (вместо использования отправки с сокращением или с использованием this.setState
, если вы сохранили его как локальное состояние).
Я думаю, что это не сложнее, чем хранить его с редукцией или локальным состоянием, с дополнительным преимуществом большего числа случаев использования выше.
Если вам нужна прочная и масштабируемая архитектура приложения, я бы предложил использовать стартер.
Викия хорошего стартового комплекта опишет выбранные принципы дизайна.
Один из моих любимых комплектов стартера для объединения с безголовым контентом - React Redux starter kit.
- 1. Войти приложение с Redux & ReactRouter
- 2. ReactRouter Ссылка рендеринга #/вместо/
- 3. Использование ReactTransitionGroup с ReactRouter
- 4. React + Redux connect (mapStateToProps)
- 5. Redux vs plain React
- 6. React/Redux скачать файл
- 7. React Redux Обязанности
- 8. InfiniteLoader and react-redux
- 9. React Redux Подтверждение навигации
- 10. LocalStorage with react-redux
- 11. React-Redux CSS-переходы
- 12. React Redux append components
- 13. React-Redux context.router.isActive
- 14. React Redux container component
- 15. React + Redux: State undefined
- 16. React Redux состав
- 17. React redux oop classes
- 18. React + Redux - архитектурный подход
- 19. React redux избранное действие
- 20. React-motion with redux
- 21. React Router + Redux?
- 22. React Router Redux Immutable
- 23. React Redux Confusion
- 24. React ReRender в Redux
- 25. React Native + Redux
- 26. Building React/Redux Application
- 27. React Redux MapStateToProps
- 28. Redux React Hello World
- 29. React Redux бесконечный цикл
- 30. Реализация React Redux
Зависит: должен ли каждый дочерний компонент иметь уникальный URL-адрес, когда он активен? Если да, то React Router может тривиально делать то, что вы хотите. Если нет, то лучше использовать состояние в родительском компоненте, чтобы решить, какой дочерний объект должен отображать. –
Смешная вещь, я, хотя вы и взваливали латинский глагол./OT –