Получение действий из redux-sagas в node_modules - PullRequest
0 голосов
/ 06 августа 2020

Я пишу код для нашего веб-приложения.

Код должен запускаться при запуске и извлекать некоторые данные из хранилища управления конфигурацией. Однако, прежде чем мы сможем получить эти данные, нам нужно, чтобы результаты нашего 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?

...