当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《与使用常规函数作为异步动作创建者相比,在redux中使用thunk中间件有什么好处?》经验,为你挑选了1个好方法。

我已经使用redux大约两个月了,并且刚刚开始探索处理异步行为的不同方法,例如获取数据.从文档和GitHub的讨论看来,通过使用thunk中间件来实现这一点的标准方法是一个非常简单的概念但是我不确定我是否理解将执行异步状态机的责任交给redux的好处中间件,可以使用简单的独立功能.

使用thunk中间件的传统Redux方法

异步Action Creator fetchPosts

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)))
  }
}

然后可能在ReactJS组件中可能有一个按钮,如下面的按钮.

调度fetchPosts

单击此按钮会调用异步操作创建者requestPosts,该函数返回接受调度的函数,并负责执行任何可能具有副作用的异步代码,并调度可能导致的真实操作.

没有thunk中间件的稍微简单的例子

虽然以上内容完全可以理解,但不清楚为什么人们不愿意做一些稍微简单化的事情,如下例所示.

在没有操作创建者的情况下委派异步调度

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)))
}

调用fetchPosts函数并将调度作为参数传递.

结论

基于这两个示例,我并没有看到使用thunk中间件的异步动作创建者如何购买任何东西,它需要在设置middlware时增加复杂性并引入两种动作创建者(1)返回单个的纯函数要发送的动作(2)不正确的功能,将动作和其他可能的响应反馈给调度员.我觉得我在这里遗漏的东西可以解释在redux中调度除了不可变动作之外的其他东西的好处.



1> acjay..:

这是非常好的胎面.我会说异步动作创建者并不是特别令人满意,这是一种常见的情绪,但有充分的理由让Redux Thunk更喜欢完全手动的方法.但这只是众多可能方法中的一种.请参阅为什么我们需要Redux中的异步流中间件?.

我认为从长远来看,社区可能会选择Redux Thunk以外的东西,但它的简单性使它成为一个很好的起点.

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有