将redux-thunk上的操作复制到redux-saga

时间:2016-12-14 11:31:33

标签: reactjs redux redux-thunk redux-saga

以下是我的redux-saga发电机

export function* toggleMenu(payload) {
let transitionDuration;
let { status } = payload;
if (!status) {
    transitionDuration = 500;
    yield put({ type:types.TOGGLE_MENU, status: 'transitioning' });
} else {
    transitionDuration = 0;
}
yield delay(transitionDuration);
yield put({ type:types.TOGGLE_MENU, status });

}

我正在尝试复制这个函数,我之前在redux-thunk上工作但是我试图给予redux-saga一个去。以下是我以前的redux-thunk函数

export const toggleMenu = status => {
let transitionDuration;
return dispatch => {
    if (!status) {
        transitionDuration = 500;
        dispatch(menu('transitioning'));
    } else {
        transitionDuration = 0;
    }
    setTimeout(() => {
        dispatch(menu(status));
    }, transitionDuration);
};

};

我现在遇到的问题是redux-saga似乎无法在调度'转换后同步处理任务。然后在延迟内进行另一次具有相同操作的调度。我在takeEvery功能上观察了我的任务。提前谢谢!

1 个答案:

答案 0 :(得分:0)

好的,我找到了解决方案,我正在观看我调度的相同动作,这让我陷入了一个循环。将我的操作类型更改为另一个,它按预期工作。