使用 IIFE 从 Thunks 调度 Redux Actions

Dispatching Redux Actions from Thunks with IIFEs

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

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

这与我在几乎所有其他地方看到的做法截然相反。虽然,老实说,我在这里没有找到很多我喜欢的关于动作命名和 thunk 命名和代码分离的好观点 material。

更典型的设置:

const action => ({
  type: ACTION
})

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

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

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

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

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

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

Redux 不限制你必须使用 action creators。您随时可以直接派发操作对象。

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