Как новичок Redux, учитывая (идею) несколько большего применение я представляю себе корень редуктор, подобный:Как вы очищаете состояние Redux?
const rootReducer = combineReducers({ accounting, crm, sales })
состояния приложения в этом случае будет содержать бухгалтерский учет, CRM, и продажи, даже если пользователь является используя только одну часть приложения. Это может быть выгодным, например, в качестве кеша при переключении между учетными записями и CRM, но вы, вероятно, не хотите сохранять все данные всех открываемых ранее просмотров, то есть полное возможное дерево состояний без каких-либо обрезков, внутри приложения навсегда или даже инициализировать все дерево до его начального состояния при загрузке.
Есть ли идиомы, узоры или библиотеки, которые решают это, или я что-то упускаю?
В качестве частичного решения, которое решает удерживающего все данные, я представляю себе что-то вроде сброса части состояния в исходное состояние при переходе от отдельных частей приложения приведены некоторые декларативные правила, такие как:
- установить
accounting = {}
(опосредованно, через действия, такие какACCOUNTING_LEAVING
), когда<Accounting/>
получаетcomponentWillUnmount
- удаления/комплект
crm.mail = {}
когда<MailEditor/>
принимаетcomponentWillUnmount
Я не видел примеров, которые каким-либо образом очищают государство. Многие примеры «list + detail view» хранят состояние, подобное { list: [...], detail: {...} }
, но при переключении на подробный просмотр список не очищается, не нумеруется и не удаляется. Это приятно, когда я могу вернуться к просмотру списка через пару минут, но не при использовании приложения с 9 по 5 без публикации данных.
(Другой) Полезный список, почти сразу же приводит меня к реакции-ui, который, похоже, справляется с удалением состояния аналогичным образом (на компонентеWillUnmount); Я буду исследовать некоторые библиотеки, чтобы найти (или добавить ...) один подходящий для моих вариантов использования. Компонентный подход для управления редукторами и государством, по-видимому, решается по-разному (по крайней мере, столько, сколько существует мнений относительно того, что должно быть в состоянии). –
Подождите, вы говорите мне, что разные разработчики имеют разные идеи о том, как это делать? Я в шоке, _shocked_!:) – markerikson
Я как раз в процессе расследования Redux и очень смущен этим. Мне кажется логичным, что в большом многозадачном приложении вы вообще не хотите, чтобы состояние сохранялось в браузере _after_ пользователь оставил «страницу». Сохранение состояния в компонентах означает, что вам не нужно беспокоиться об этом - состояние уничтожается вместе с компонентом, но, по-видимому, его размещение в хранилище Redux требует значительных накладных расходов с точки зрения явного управления его жизненным циклом. Это заставляет меня сильно наклониться от Redux и _towards - компонентный подход к управлению государством. Что мне не хватает? –