为了账号安全,请及时绑定邮箱和手机立即绑定

关于redux中dispatch异步action

关于redux中dispatch异步action

有只小跳蛙 2018-08-03 20:12:40
在redux中dispatch异步action,通常是1写法。但是不理解1和2的区别,求指导!const fetchPosts = (postTitle) => (dispatch, getState) => {   dispatch({ type: 'FETCH_POSTS_REQUEST' });  return fetch(`/some/API/${postTitle}.json`)     .then(response => response.json())     .then(json => dispatch(receivePosts(json)));   }; };//1store.dispatch(fetchPosts('reactjs')).then(() =>      //do sth.);//2fetchPosts('reactjs').then(() =>      //do sth.);
查看完整描述

1 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

2的写法有误,因为fetchPost('reactjs')的返回值并不是一个promise
1为什么可以这样写?
以使用redux-thunk为例,封装后的dispatch方法其实是下面的功能(完整代码请参见github)

function (action) {    if (typeof action === 'function') {      return action(dispatch, getState, extraArgument);
    }    
    return next(action);
};

所以store.dispatch(fetch('reactjs'))拆成两步来看
第一步:fetch('reactjs')返回的是下面的函数

(dispatch, getState) => {
  dispatch({ type: 'FETCH_POSTS_REQUEST' });  return fetch(`/some/API/${postTitle}.json`)
    .then(response => response.json())
    .then(json => dispatch(receivePosts(json)));
  };
};

第二步:调用第一步返回的函数并传入相应的参数


查看完整回答
反对 回复 2018-08-05
  • 1 回答
  • 0 关注
  • 3206 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信