当前位置: 首页 > 知识库问答 >
问题:

为什么使用Redux-Thunk?[副本]

淳于鹏
2023-03-14

我不明白需要redux-thunk这样的东西。根据我的理解,Thunk是一个返回函数的函数。在我看来,包装的表达式和中间件的使用更容易混淆正在发生的事情。摘自redux-thunk示例代码

import thunk from 'redux-thunk';

// Note: this API requires redux@>=3.1.0
const store = createStore(
  rootReducer,
  applyMiddleware(thunk)
);


// Meet thunks.
// A thunk is a function t hat returns a function.
// This is a thunk.

function makeASandwichWithSecretSauce(forPerson) {

  // Invert control!
  // Return a function that accepts `dispatch` so we can dispatch later.
  // Thunk middleware knows how to turn thunk async actions into actions.

  return function (dispatch) {
    return fetchSecretSauce().then(
      sauce => dispatch(makeASandwich(forPerson, sauce)),
      error => dispatch(apologize('The Sandwich Shop', forPerson, error))
    );
  };
}

// Thunk middleware lets me dispatch thunk async actions
// as if they were actions!

store.dispatch(
  makeASandwichWithSecretSauce('Me')
);

上面的代码可以写得更简洁和直观:

fetchSecretSauce().then(
  sauce => store.dispatch(makeASandwich('Me', sauce)),
  error => store.dispatch(apologize('The Sandwich Shop', forPerson, error))
)

我的问题是,redux-thunk实现了什么需求,以及它如何改进类似于上面示例的现有解决方案。

共有1个答案

孟鹏海
2023-03-14

Redux Thunk教Redux识别事实上是功能的特殊类型的动作。

当操作创建者返回一个函数时,该函数将由Redux Thunk中间件执行。这个函数不需要是纯粹的;因此允许它有副作用,包括执行异步API调用。该函数还可以分派操作。

thunk可以用来延迟一个动作的调度,或者只有在满足某个条件时才调度。

如果Redux Thunk中间件被启用,任何时候您试图分派一个函数而不是操作对象,中间件都会用分派方法本身作为第一个参数调用该函数。

然后,由于我们“教会”Redux来识别这样的“特殊”动作创造者(我们称之为thunk动作创造者),我们现在可以在任何我们使用常规动作创造者的地方使用它们。

看看丹·阿布拉莫夫自己的这个伟大的回答,它涵盖了一切:https://stackoverflow.com/a/35415559/5714933

还要查看这些链接以获得更多信息:

https://github.com/gaearon/redux-thunk#动机http://redux.js.org/docs/advanced/asyncactions.html

 类似资料:
  • 问题内容: 我正在使用React + Flux。我们的团队计划从助焊剂转变为还原剂。Redux对于来自助焊剂世界的我非常困惑。在 磁通控制中, 从 **组件- 操作->存储和存储更新返回组件 很** 简单。它很简单,也很清楚。 但在redux中令人困惑。这里没有商店,是的,有些例子没有使用商店。我经历了一些教程,看来每个人都有自己的实现风格。有些正在使用容器,有些则没有。(我不知道这个Contai

  • 本文向大家介绍redux的thunk作用是什么?相关面试题,主要包含被问及redux的thunk作用是什么?时的应答技巧和注意事项,需要的朋友参考一下 redux-thunk的作用:不使用中间件的情况,action只能是个对象,thunk帮助我们异步请求数据给store

  • 问题内容: 据我所知并纠正我是否有错,redux-thunk是一个中间件,可以帮助我们在操作本身中调度异步函数并调试值,而当我使用redux- promise时 ,如果不实现自己的实现就无法创建异步函数作为Action的机制抛出仅分配纯对象的异常。 这两个软件包之间的主要区别是什么?在单个页面react应用程序中使用这两个软件包或坚持redux-thunk就足够了吗? 问题答案: 允许您的动作创建

  • Redux Thunk和Redux Saga都是Redux的中间件。两者之间的区别是什么?如何确定何时使用Redux Thunk或Redux Saga?

  • 本文向大家介绍redux-saga和redux-thunk有什么本质的区别?相关面试题,主要包含被问及redux-saga和redux-thunk有什么本质的区别?时的应答技巧和注意事项,需要的朋友参考一下 saga 自己基本上完全弄了一套 asyc 的事件监听机制。虽然好的一方面是将来可以扩展成 worker 相关的模块,甚至可以做到 multiple threads 同时执行,但代码量大大增加

  • 本文向大家介绍redux Redux-thunk:基础知识,包括了redux Redux-thunk:基础知识的使用技巧和注意事项,需要的朋友参考一下 示例 虽然redux本身是完全同步的,但是您可以使用中间件redux-thunk来处理异步操作。 “ thunk”是回调的另一个名称。该函数通常作为参数传递,以便以后调用。 要使用,请将中间件应用于您的redux存储: 这使您可以将thunk传递给