也许我错过了重点或sagas的工作方式,但我不确定如何执行以下操作
export default function* (){
yield all([
takeLatest(TOGGLE_MODAL, toggleModal)
]);
}
我有这个“初始”功能,在这里我称之为其他功能。 我调用的函数之一是生成器函数,它可以正常工作
function* myOtherFunction(){
}
说我想在代码的其他地方调用此函数,我该怎么做? 我想在动作创建者内部调用它
(当我在其中使用yield
时,它会成为生成器)
答案 0 :(得分:0)
您不会直接致电Sagas。 您可以通过操作创建者创建操作,然后将其分发到商店。 您将sagas注册到商店的saga中间件中,以便每次收到特定操作时就会调用它们。
假设您有一个动作CALL_OTHER_FUNCTION
和相应的动作创建者callOtherFunction()
。您可以将其分派到某个地方,例如,在带有mapDispatchToProps
的组件中:
const mapDispatchToProps = dispatch => {
return {
callOtherFn: () => dispatch(callOtherFunction())
};
};
在您的传奇故事中,您现在只需要使用take()
,takeAll()
,takeLatest()
或其他适合您需要的effect creator收听此操作。
export default function* (){
yield all([
takeLatest(TOGGLE_MODAL, toggleModal),
takeLatest(CALL_OTHER_FUNCTION, myOtherFunction]);
}
此后,您调度到商店的每个操作都会调用myOtherFunction
生成器。