Redux Async

异步actions

当调用一个异步API时,会有两个关键时刻:开始调用函数的时刻和获得响应的时刻(或者超时了😢)。

这两个时刻都可能更改应用程序中state,所以需要在这两个时刻派发action,并且与此同时让reducer生成新的state,面对这种情况,通常需要最起码派发三种不同的action

  • 一个action负责通知reducers请求已经开始 reducers可能会在state中保存一个isFetching标志,以通知UI显示加载页面
  • 一个action负责通知reducers请求已经成功完成 reducers会将新的数据合并进state,并且重置isFetching标志,UI界面将会隐藏加载页面并且展示获取的数据
  • 一个action负责通知reducers请求失败了 这种情况下reducers也会重置isFecthing,可能某些情况下reducers会将错误信息储存以便于UI展示。

可以在action中使用一个专用的status字段:

{ type: 'FETCH_POSTS' }
{ type: 'FETCH_POSTS', status: 'error', error: 'Oops' }
{ type: 'FETCH_POSTS', status: 'success', response: { ... } }

或者为它们定义不同的type类型:

{ type: 'FETCH_POSTS_REQUEST' }
{ type: 'FETCH_POSTS_FAILURE', error: 'Oops' }
{ type: 'FETCH_POSTS_SUCCESS', response: { ... } }

可以选择使用单个action type加flag标识,或者是定义不同的action type都可以。type增多了会减少错误几率,但是如果使用redux-actions这样的辅助库来生成action和reducer就不用考虑这样的问题。

results matching ""

    No results matching ""