redux的“异步行动”带来了哪些好处?

时间:2016-01-17 14:26:53

标签: asynchronous middleware redux

Redux documentation表示要进行异步调用 - 这通常涉及指示异步调用开始的操作,以及稍后指示其完成的操作 - 我应该使用“thunk”中间件。这允许我写这样的“动作创作者”:

function fetchPosts(reddit) {
  return dispatch => {
    dispatch(requestPosts(reddit))
    return fetch(`http://www.reddit.com/r/${reddit}.json`)
      .then(response => response.json())
      .then(json => dispatch(receivePosts(reddit, json)))
  }
}

(此处requestPostsreceivePosts是动作创建者。)

thunk中间件允许我发送fetchPosts的(函数)输出,例如

store.dispatch(fetchPosts('reactjs')).then(() =>
  ...

但为什么要涉及中间件呢?为什么这比使用全局存储编写自己的fetchPost函数更好,如下所示:

function fetchPosts(reddit) {
  store.dispatch(requestPosts(reddit));
  return fetch(`http://www.reddit.com/r/${reddit}.json`)
      .then(response => response.json())
      .then(json => store.dispatch(receivePosts(reddit, json)))
  }
}

显然,我不能dispatch这个功能,但这似乎并不十分重要。我错过了什么?

0 个答案:

没有答案