Redux_Saga。如何将函数作为嵌套Generator的参数传递?

时间:2018-05-07 09:57:32

标签: javascript generator redux-saga

所以,我想推动一些函数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;

1 个答案:

答案 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传奇论据中交换setupSagacreateSaga顺序。

https://redux-saga.js.org/docs/api/#takeeverypattern-saga-args