Redux async action 流程控制问题

#1

异步用的 redux-thunk。

dispatch(asyncActionCreator()) 后会有 request -> success 和 request -> failure 2 种情况,在获取数据并渲染到页面的情况下,直接就工作了。但是如果我想在 success 后 dispatch 另一个 action,我可以用回调函数做,比如:

dispatch(asyncActionCreator((err) => {
  if (err) { console.error(err) }

  dispatch(anotherActionCreator())
}))

还是根据 state 的数据判断,比如 staus = undefined,success 后变为 ‘success’,fail 后变为 ‘error’,这样有个问题:你退出这个界面,再进去,state 是一直在的,会再次 dispatch(anotherActionCreator()),而我要的只是成功后调转一次,这个时候就还要 dispatch 一个清空这部分数据的 action,感觉很繁琐。

数据渲染这部分 react + redux 处理的挺好,而流程控制这部分感觉不是很清楚。我用“数据渲染”和“流程控制”这 2 个词,但是自己也没想清楚,大家有什么好建议吗?

#2

万能的方案

try {
    
} catch (error) {

}
#3

能详细说吗?try…catch 用来处理错误,跟流程控制有什么关系?

#4

不是听的很懂…不过你要判断store里面是不是有什么data?

const myAction = () => (dispatch, getState) => {
  if(getState().YOUR_DATA){
    do something...
  } else {
    do something...
  }
}
#5

最近也有在使用redux,异步的处理方式也有接触到,
有兴趣可以看看我最近写的一个小示例,github上完整的