Где запустить компонент саги? - PullRequest
0 голосов
/ 06 ноября 2018

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

public componentDidMount() {
    sagaMiddleware.run(componentSpecificSagas);
}

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

Какова наилучшая практика для запуска саг для конкретных компонентов? Должны ли они просто быть запущены в магазине? Должны ли они быть запущены в разъеме?

1 Ответ

0 голосов
/ 06 ноября 2018

Создайте сагу корневого уровня, состоящую из саг вашей логики приложения:

function* rootSaga() {
    yield spawn(saga1)
    yield spawn(saga2)
    // ...
}

Запуск саги в корневом компоненте. Официальный пример redux-saga :

store.runSaga(rootSaga)

render(
    <Root
        //...
    />,
    //...
)

Тогда остальная часть дерева компонентов не имеет саговой логики.

...