Redux Saga多重看跌期权如果没有延迟就无法正常工作

问题描述 投票:0回答:1

我正在尝试从我的传奇中分发2个看跌期权动作,但是,只有第一个看跌期权似乎有效。我使用Redux DevTools检查了动作流,它显示了两个动作都被调用了。

function* root() {
    yield all([
        takeEvery('SET_DATA'), updateSections)
    ]);
}

function* updateSections(action) {

   ...some logic

   if (someValue === 1) {
       yield put({ type: 'UNHIDE_SECTION', sectionName: 'section1' });
       yield put({ type: 'HIDE_SECTION', sectionName: 'section2' });

   } else {
       yield put({ type: 'UNHIDE_SECTION', sectionName: 'section2' });
       yield put({ type: 'HIDE_SECTION', sectionName: 'section1' });
   }
}

我设法通过在两个收益率之间增加延迟来成功地完成了两个动作,就像这样:

if (someValue === 1) {
    yield put({ type: 'UNHIDE_SECTION', sectionName: 'section1' });
    delay(100);
    yield put({ type: 'HIDE_SECTION', sectionName: 'section2' });

} else {
    yield put({ type: 'UNHIDE_SECTION', sectionName: 'section2' });
    delay(100);
    yield put({ type: 'HIDE_SECTION', sectionName: 'section1' });
}

有没有更好的方法来执行此操作而不增加延迟?

javascript reactjs redux redux-saga
1个回答
0
投票

将两个部分分配到一个函数中,而不是每个函数分配给两个函数


yield put({ type: 'MODIFIED_SECTIONS', sections: [ { name: 'section1' , isHide: false }, { name: 'section2', isHide: true} ] }}

并且在减少使用isHide标志的同时对每个部分name执行操作

© www.soinside.com 2019 - 2024. All rights reserved.