使用 IIFE 从 Thunk 分派 Redux 操作

Posted

技术标签:

【中文标题】使用 IIFE 从 Thunk 分派 Redux 操作【英文标题】:Dispatching Redux Actions from Thunks with IIFEs 【发布时间】:2017-10-14 23:08:16 【问题描述】:

我想知道是否有其他人看到过从 thunk 作为匿名 IIFE 分派动作的模式。我在一些 thunk 上这样做,但我不确定这是否被认为是不好的做法,或者为什么会这样。对我来说,它有助于避免我的动作创建者命名冗余。

const action => dispatch => 
  //some async stuff
  dispatch((()=>(type: ACTION))())

这与我几乎在其他任何地方都看到的方式相反。虽然,老实说,我还没有在这里找到很多我喜欢的关于动作命名和 thunk 命名和代码分离的好的固执己见的材料。

更典型的设置:

const action => (
  type: ACTION
)

const thunkAction => dispatch => 
  dispatch(action())

第一种方法只是让您避免使用两个具有基本相同目的的类似名称的函数。我很惊讶我没有看到其他人使用它,尽管也许我很久没有使用 redux 了。对我来说,这要容易得多,因为在我使用它的情况下,我永远不会在没有 thunk 的情况下调用调度动作。但是,也许这只是我忽略的一种不好的做法。

有谁知道为什么这会或不会是一个坏模式?

【问题讨论】:

【参考方案1】:

如果你更喜欢第一个,为什么不直接

const action => dispatch => 
  // some async stuff
  dispatch( type: ACTION )

您甚至不需要为此编写函数(动作创建器)。

Redux 并不限制您必须使用动作创建器。您总是可以随意直接分派一个动作对象。

但动作创作者确实有一些好处。这是给你的参考http://blog.isquaredsoftware.com/2016/10/idiomatic-redux-why-use-action-creators/

【讨论】:

哦,哇,这更有意义! 掌心 感谢您的参考。绝对是想多了,哈哈。 很好的答案,作为那篇博文的作者,很高兴知道它有帮助:)

以上是关于使用 IIFE 从 Thunk 分派 Redux 操作的主要内容,如果未能解决你的问题,请参考以下文章

Redux thunk:等待异步函数调度

使用 Redux Thunk 和 Axios 测试 Action Creator

在React / Redux中,如果函数组件正在使用redux-thunk调度函数,则如何setIsLoading()?

redux thunk - 承诺完成后如何在嵌套数组中调度数据

redux dispatch 多次触发

Reducer 状态没有被新对象更新 [redux, redux-toolkit, normalize]