作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以,我想将一些函数 setupSocket
作为参数推送到嵌套的生成器 createSaga
中执行,但现在我不明白我该怎么做?
在父生成器 mySaga
中,setupSocket
正常显示,但在 createSaga
中没有...
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;
最佳答案
您可以将额外的参数传递给 takeEvery
,这些参数将传递给 saga。
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
关于javascript - Redux_Saga。如何将函数作为参数传递给嵌套的生成器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50211483/
我是一名优秀的程序员,十分优秀!