我正在尝试从我的传奇中分发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' });
}
有没有更好的方法来执行此操作而不增加延迟?
将两个部分分配到一个函数中,而不是每个函数分配给两个函数
yield put({ type: 'MODIFIED_SECTIONS', sections: [ { name: 'section1' , isHide: false }, { name: 'section2', isHide: true} ] }}
并且在减少使用isHide
标志的同时对每个部分name
执行操作