什么是一个好的redux-saga模式来引导一个在开始时下载数据的应用程序

时间:2017-05-10 11:38:29

标签: react-redux redux-saga

我有一个Web应用程序,首先加载需要1-10秒的数据。

我会在应用启动后立即显示完整的用户界面(地图),然后在后台启动下载。

在下载数据时,我想延迟一些效果,例如显示路线和搜索结果。)

在加载数据后,任何在加载数据时去掉的操作(比如用户类型搜索词)都将被执行

所以:

App Starts 
      forks data download in background 
        shows UI
        lets user type -> debounce --> execute only after data has downloaded
         show more (route etc.) once download is complete

我们如何在saga中执行此操作 - 我认为这是完成此类任务的最强大的框架。我没有将此视为标准模式之一,但我认为这将非常普遍。

1 个答案:

答案 0 :(得分:0)

这样的事情怎么样:

function* fetchInitData(){}

function* setupLocale(){} 

function* submit(value){
   while(yield !select(state=>state.started)){
       yield delay(100);
   }
   yield call(fetch,...)
}
function* startSaga(){
   yield all[
      call(fetchInitData),
      call(setupLocale),
      delay(3000) // Wait at least 3 seconds
   ]
   yield put({
      type: "APP_STARTED",
   });    
}

只需使用{started:false}初始化您的redux商店应用并减少APP_STARTED操作。