所以,我想推动一些函数setupSocket
作为嵌套生成器createSaga
内部执行的参数,但是现在我无法理解如何制作它?
在父级生成器mySaga
内,setupSocket
正常显示,但在createSaga
nope内...
import { takeEvery, put, call, take } from 'redux-saga/effects';
import { delay } from 'redux-saga';
import { addMessage, addUser } from '../actions'
import * as constants from '../constants'
function* createSaga(action, setupSocket) {
try {
console.log(setupSocket); // not good
yield put(addMessage(action.message, action.author, action.photo));
yield put(addUser(action.author, action.photo));
} catch (e) {
console.log(e)
}
};
function* mySaga(setupSocket) {
console.log(setupSocket); // all good
yield takeEvery(constants.ADD_DATA, createSaga);
};
export default mySaga;
答案 0 :(得分:1)
您可以将其他参数传递给takeEvery
,这些参数将传递给传奇。
function* createSaga(setupSocket, action) {
console.log(setupSocket); // should now be good
...
};
function* mySaga(setupSocket) {
yield takeEvery(constants.ADD_DATA, createSaga, setupSocket);
};
如果你传递一些论点,action
将永远是最后一个,所以我必须在action
传奇论据中交换setupSaga
和createSaga
顺序。
https://redux-saga.js.org/docs/api/#takeeverypattern-saga-args