Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 什么';这两种rootSaga配置的区别是什么_Reactjs_Redux_React Redux_Redux Saga - Fatal编程技术网

Reactjs 什么';这两种rootSaga配置的区别是什么

Reactjs 什么';这两种rootSaga配置的区别是什么,reactjs,redux,react-redux,redux-saga,Reactjs,Redux,React Redux,Redux Saga,下面的代码是对redux传奇中的rootSaga的一次尝试 有人能告诉我区别吗 //第一类 导出默认函数*rootProjectSaga():IterableIterator{ 交出全部([ takeEvery(转让项目、转让项目,如有), takeLatest(加载_项目,获取项目,如有) ]) } //种类2 导出默认函数*rootProjectSaga():IterableIterator{ 收益率(转让项目、转让项目,如有) 收益率(加载项目、获取项目,如有) } const sa

下面的代码是对redux传奇中的rootSaga的一次尝试

有人能告诉我区别吗


//第一类
导出默认函数*rootProjectSaga():IterableIterator{
交出全部([
takeEvery(转让项目、转让项目,如有),
takeLatest(加载_项目,获取项目,如有)
])
}
//种类2
导出默认函数*rootProjectSaga():IterableIterator{
收益率(转让项目、转让项目,如有)
收益率(加载项目、获取项目,如有)
}
const sagaMiddleware=createSagaMiddleware()
const store=createStore(
减速器,
applyMiddleware(sagaMiddleware)
)
sagaMiddleware.run(rootProjectSaga)
请注意,上述代码不会注意到在传输项目之前发生的任何加载项目操作,也不会注意到在等待加载项目时发生的任何传输项目操作

此外,如果希望这种情况发生不止一次,则需要将其包装在一个循环中:

export default function* rootProjectSaga () {  
  while (true) {
    const transferAction = yield take(TRANSFER_PROJECT);
    yield call(transferProject, transferAction);
    const loadAction = yield take(LOAD_PROJECTS);
    yield call(getProjects, loadAction);   
  }
}

我的要求是,在转移\u项目后,我将加载\u项目。但是对于类型1的代码,我发现执行顺序无法保证。非常感谢您的回复,我使用rootSaga的确切上下文如上所述,我不知道区别。你能找到我吗!
export default function* rootProjectSaga (): IterableIterator<any> {  
  yield all([
    takeEvery(TRANSFER_PROJECT, transferProject as any),
    takeLatest(LOAD_PROJECTS, getProjects as any)    
  ])
}
export default function* rootProjectSaga () {  
  const transferAction = yield take(TRANSFER_PROJECT);
  yield call(transferProject, transferAction);
  const loadAction = yield take(LOAD_PROJECTS);
  yield call(getProjects, loadAction);   
}
export default function* rootProjectSaga () {  
  while (true) {
    const transferAction = yield take(TRANSFER_PROJECT);
    yield call(transferProject, transferAction);
    const loadAction = yield take(LOAD_PROJECTS);
    yield call(getProjects, loadAction);   
  }
}