Я пишу код для нашего веб-приложения.
Код должен запускаться при запуске и извлекать некоторые данные из хранилища управления конфигурацией. Однако, прежде чем мы сможем получить эти данные, нам нужно, чтобы результаты нашего API аутентификации были возвращены, чтобы мы могли использовать результаты в запросе для возврата правильной конфигурации.
Этот код будет одинаковым для всех все наши микро-интерфейсы; Итак, я хотел бы уменьшить дублирование и поместить код в наш пакет интерфейсных утилит, который упакован и развернут в Artifactory, а затем установлен как node_module
на наших концах шрифтов.
Код выглядит примерно так и работает так, как задумано, когда написано локально в приложении. Когда запрос авторизации возвращается успешно, запрос конфигурации отключается.
В методе fetchConfiguration
устанавливаются разумные значения по умолчанию, но при необходимости разрешается передавать переопределения.
// sagas/startup.js
import { takeLatest, put, fork } from 'redux-saga/effects';
import { FETCH_AUTH_SUCCESS } from 'fe-auth'
import { fetchConfiguration } from 'fe-utils';
export function* initConfiguration({ url, context, defaults } = {}) {
yield takeLatest([FETCH_AUTH_SUCCESS], function* execute() {
yield put(fetchConfiguration({ url, context, defaults }));
});
}
export default function* startUpSagas() {
yield fork(initConfiguration);
}
// sagas/index.js
import { spawn } from 'redux-saga/effects';
import startUpSagas from './startUp';
...
export default function* rootSaga() {
...
yield spawn(startUpSagas);
}
Однако при изменении ничего, кроме источника метода initConfiguration
(при переносе его в наш пакет fe-utils
вместо существующего локально) кажется, что используется другой экземпляр хранилища redux, а не хранилище приложение отправляет действия, так как действия не отправляются из кода приложения.
То есть, при рефакторинге кода до следующего, оно больше не получает FETCH_AUTH_SUCCESS
. Добавление журналов к методу initConfiguration
, похоже, правильно настроило код для получения действия.
Даже при изменении takeLatest([FETCH_AUTH_SUCCESS]...
на takeEvery('*',...
я по-прежнему не получаю отправленных действий при извлечении этого из нашего пакет утилит; запрос конфигурации никогда не запускается.
// sagas/startup.js
import { fork } from 'redux-saga/effects';
import { initConfiguration } from 'fe-utils';
export default function* startUpSagas() {
yield fork(initConfiguration);
}
// sagas/index.js
import { spawn } from 'redux-saga/effects';
import startUpSagas from './startUp';
...
export default function* rootSaga() {
...
yield spawn(startUpSagas);
}
Я что-то настроил неправильно? Или есть что-то, чего я не понимаю в том, как управляется (или не управляется) хранилище redux между кодом приложения и node_modules
?