Javascript 在redux中使用thunk中间件比使用常规函数作为异步操作创建者有什么好处?

Javascript 在redux中使用thunk中间件比使用常规函数作为异步操作创建者有什么好处?,javascript,asynchronous,reactjs,redux,redux-thunk,Javascript,Asynchronous,Reactjs,Redux,Redux Thunk,我已经使用redux大约两个月了,最近刚刚开始探索处理异步行为(如获取数据)的不同方法。从和中可以看出,使用的标准方法是使用,这是一个非常简单的概念,但是我不确定我是否理解在使用简单的独立函数时,将执行异步状态机的责任交给redux中间件的好处 使用thunk中间件的传统Redux方法 异步操作创建者获取帖子 然后,可能在ReactJS组件中有一个按钮,如下面的按钮 发送回执站 调用fetchPosts函数并将分派作为参数传递。 fetchPosts(this.props.dispatch,th

我已经使用redux大约两个月了,最近刚刚开始探索处理异步行为(如获取数据)的不同方法。从和中可以看出,使用的标准方法是使用,这是一个非常简单的概念,但是我不确定我是否理解在使用简单的独立函数时,将执行异步状态机的责任交给redux中间件的好处

使用thunk中间件的传统Redux方法 异步操作创建者获取帖子 然后,可能在ReactJS组件中有一个按钮,如下面的按钮

发送回执站 调用fetchPosts函数并将分派作为参数传递。
fetchPosts(this.props.dispatch,this.props.reddit)}/>
结论
基于这两个并排的示例,我看不出使用thunk中间件的异步动作创建者是如何为我买东西的,它需要在设置middlware时增加复杂性,并引入了两种动作创建者(1)纯函数,返回要调度的单个动作(2)不纯净的函数会将动作和其他声音反馈给调度程序。我觉得我在这里遗漏了一些东西,这些东西可以解释在redux中发送不可变操作以外的其他操作的好处。

这很好。我想说,异步动作创作者并不特别满意是一种常见的看法,但是有很好的理由选择Redux Thunk而不是完全手动的方法。但这只是众多可能方法之一。看


我认为,从长远来看,社区可能会选择Redux 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)))
  }
}
<button onClick={() => this.props.dispatch(fetchPosts(this.props.reddit))} />
function fetchPosts(dispatch, reddit) {
  dispatch(requestPosts(reddit))
  return fetch(`http://www.reddit.com/r/${reddit}.json`)
    .then(response => response.json())
    .then(json => dispatch(receivePosts(reddit, json)))
}
<button onClick={() => fetchPosts(this.props.dispatch, this.props.reddit)} />