Какая правильная организация react-redux приложения?

Подскажите.
Как правильно организовать react приложение с использованием react redux
По типу ToDo

Как реализовать связь разных компонентов?
Есть меню(не навигация, а просто набор плюшек, к примеру добавить заметку) и сама область где отображается эта заметка.
(как мне сейчас кажется, это точно не наследуемые друг от друга компоненты)

Пока в голове только наследование.
Но если в меню будет много всяких плюшек(добавить картинку, таймер, напоминалку, статью )
то наследжование выйдет диким.

Да и вообще, мне кажется что это плохая идея.

Как я это вижу.
Есть две области(меню и рабочий стол)
Меню при вызове запускает компонент конкретной задачи. тот отправляет результат на рабочий стол и там оно хранится (пока до первой перезагрузки)

И еще. думаю вынести все данные(пункты меню к примеру) в отдельный файл(этакий недосервер)
Где с ним лучше общаться? использую react-redux

Импортить его в каждом файле где он нужен думаю не лучший вариант.
Если предположить что структура сервера может быть разной. то по логике нужно сделать один компонент который будет приводить эту структуру в нужный вид.
Но в случает redux фиг его, может нужно его подключить в рутовый файл. а в случае actioncreater подгружать новые данные в reducer....
  • Вопрос задан
  • 1849 просмотров
Пригласить эксперта
Ответы на вопрос 1
maxfarseer
@maxfarseer
https://maxpfrontend.ru, обучаю реакту и компании
Не понял о каком наследовании идет речь, а так же последние абзацы, остальное кажется достаточно понятным, поехали.

Есть меню(не навигация, а просто набор плюшек, к примеру добавить заметку) и сама область где отображается эта заметка.

Почему этот "набор плюшек" не завязать на "навигации" ?
То есть "добавить заметку" -> /add, редактировать -> /edit/:id .. ? В любом случае, вы сами пишите о 2х областях, которые есть на всех страницах, значит у вас должен быть родительский компонент, в котором рендерится "шапка (меню это или нет, не важно) + рабочая область"

Получается, если вы все же за идею с роутером, то примерный код будет таким:
App.js
...
<HeaderContainer /> // (или тупой <Header />)
{ this.props.children }
...


Внутри children, само собой разумеется - то, что возвращает ваш роутинг, значит, код роутера примерно такой:
...
<Route path='/add' component={AddContainer} />
<Route path='/edit/:id' component={EditContainer} />
...


Когда я говорю "контейнер", значит я подразумеваю (как и все остальные), что это компонент, который присоединен к redux ( то есть
connect(mapStateToProps,mapDispatchToProps)(имя_компонента)
).

Таким образом, мы уже решили вашу задачу про: Меню при вызове запускает компонент конкретной задачи. тот отправляет результат на рабочий стол и там оно хранится , так как у нас в меню все сделано с помощью Link из react-router'a, и наша рабочая область изменяется вместе с URL-адресом браузера. Если есть необходимость, все клики по меню "прогонять" через ActionCreators (AC) выполняя какие-то дополнительные действия, или просто "для порядка" - то вы можете использовать внутри ваших AC push из react-router-redux, выглядит это обычно так:
dispatch(push('/newUrl'))

Если вы с реакт-роутером не хотите пример делать, то принцип все равно будет такой же, только вместо URL адреса, у вас должен быть другой признак, на основе которого будет создаваться рабочая область.

---
И еще. думаю вынести все данные(пункты меню к примеру) в отдельный файл(этакий недосервер)
Где с ним лучше общаться? использую react-redux

Определенно будете общаться в ваших функциях-создателях-действий, так как это же будет асинхронный запрос за json-файликом, а значит другого места быть не может. Если опустить правильные названия, то ваша область работы с файлом - actions.
---

Как уже сказано, в конце не пойму о чем вы пишите... Структура "ответа с сервера" ? или о чем речь? Зачем вам компонент, который будет приводить структуру в нужный вид? и тд.

---
Напоследок:

Да и мне примеры вовсе не нужны. хочу для начала своих шишек набить.
НО точно не хочу пару месяцев пилить проект(бесконечно усложняющаяся toDo) а потом понять что привык делать так как не надо.

Никакого привыкания "делать, как не надо" - не бывает. Вы сначала делаете так, как считаете наилучше возможным, в процессе, что-то подпиливая, потом приходит озарение/совет - вы понимаете, что так будет лучше и делаете дальше. Если программист знает как "сделать лучше", но при этом делает "как привык" то грошь ему цена.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы