как вызвать функцию генератора саги-редуктора? - PullRequest
0 голосов
/ 04 марта 2019

возможно, я упускаю суть или как работают саги, но я не уверен, как сделать следующее

export default function* (){
   yield all([
     takeLatest(TOGGLE_MODAL, toggleModal)
   ]);
}

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

function* myOtherFunction(){

}

скажем, я хочу вызвать эту функцию в другом месте моего кода, как бы я это сделал?Я хочу назвать его внутри создателя действия

(он должен быть генератором, поскольку я использую yield внутри него)

1 Ответ

0 голосов
/ 04 марта 2019

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

Допустим, у вас есть действие CALL_OTHER_FUNCTION и создатель соответствующего действия callOtherFunction().вы отправляете его куда-нибудь, например, в компонент с mapDispatchToProps:

const mapDispatchToProps = dispatch => {
    return {
        callOtherFn: () => dispatch(callOtherFunction())
    };

};

В вашей саге вам просто нужно прослушать это действие с помощью take(),takeAll(), takeLatest() или другого создателя эффекта , который соответствует вашим потребностям.

export default function* (){
   yield all([
     takeLatest(TOGGLE_MODAL, toggleModal),
     takeLatest(CALL_OTHER_FUNCTION, myOtherFunction]);
}

после этого ваш генератор myOtherFunction вызывается при каждом действии, которое вы отправляете в магазин.

...