Круговая зависимость в модулях redux Dynami c - PullRequest
0 голосов
/ 19 июня 2020

Моя структура проекта выглядит так: sr c> Компоненты> Модули Модули содержат A, B, C et c

Каждый модуль содержит - Компоненты, действие. js, редуктор. js, module. js, saga. js Мы используем модули redux Dynami c для динамического добавления модулей и добавления зависимости модуля к модулю. js

У меня есть какое-то требование проекта, чтобы проверить, существует ли компонент A в DOM и входит ли компонент B, я должен отклонить компонент A и показать компонент B.

Итак, я написал модуль D (активный модуль), который имеет состояние активного компонента и добавлено D, чтобы быть зависимостью от A, B, C

A, B, C используйте селекторы D, чтобы получить активный режим и проверить входящий режим на соответствие активный режим.

Если A существовал, а затем входит B, B получает активный режим от селектора D и отправляет действие модулю A. Итак, B добавляет A как зависимость.

Если бы я был напишите то же самое для активного B и входящего A, я закончу добавлением B в качестве зависимости к A.

Это вызывает циклическую зависимость, мы используем саги о сокращении в коде.

Любые предложения добро пожаловать

1 Ответ

0 голосов
/ 19 июня 2020

Не могли бы вы использовать контекст приложения, а модули использовать через него другие модули. Вот несколько строк псевдокода, описывающих то, что я сделал:

// applcation-context.js
// Code with regesterModules(...modules)
// and methods/functions actions(moduleId), selectors(moduleId), ...

// bootstrap.js
import A from 'modules/A'
import B from 'modules/B'

appContext.regesterModules([A, B])

// Module A index.js
exports {moduleId: 'A', reducers, sagas, selectors, actions, routes, ... }

// Module B
import appContext from '../../application-context'

[...]
yield put(appContext.actions('A').actionCreator_1(...))
[...]
...