redux-thunk的作用为什么不用异步的dispatch(action)来代替?

// redux-thunk
const fetchData = (params) => (dispatch) => {
  setTimeout(() => {
    dispatch({action: 'GET_DATA', payload: 111})
  })
} 
// 异步dispatch
const fetchData = (params) => ({action: 'GET_DATA', payload: 111});

setTimeout(() => {
  dispatch(fetchData(...))
})

不明白这两种方式有什么区别。
求大佬举实例说明下。 万分感谢

阅读 2.5k
2 个回答

redux-thunk的主要作用应该不是异步同步的问题,在你使用redux-thunk之前,只能dispatch一个action对象:

dispatch({type:'DO_SOMETHING'})

而使用他之后,你可以dispatch一个函数

dispatch(function (dispatch) {
    $.get('/api/somepath', function(users) {
        dispatch({
            type: 'FETCH_USERS_SUCCESS',
            users: users,
        });
    });
});
你可以在函数里面做你想做的逻辑处理等工作

看这篇
https://stackoverflow.com/que...

大致意思是为了
1、简化重复的 this.props.dispatch()
2、保持服务端渲染的一致性
3、方便单元测试

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题