使用 redux thunk 发送

Dispatch with redux thunk

我最近在学习redux-thunk,遇到了一个奇怪的使用函数返回函数的语法。

const App = () => {
  const dispatch = useDispatch()

  useEffect(() => {
    dispatch(anecdoteService.initializeAnecdotes())
  }, [dispatch])

也可以改写为

const App = () => {
  const dispatch = useDispatch()

  useEffect(() => {
    anecdoteService.initializeAnecdotes()(dispatch)
  }, [dispatch])

initializeAnecdotes 定义为

const initializeAnecdotes = () => {
  return async dispatch => {
    const anecdotes = await getAll()
    dispatch({
      type: 'INIT_ANECDOTES',
      data: anecdotes,
    })
  }
} 

它们都有效(至少对我而言),我的问题是第一个版本是如何工作的?

redux-thunk 允许你调度被调用的函数:https://github.com/reduxjs/redux-thunk/blob/master/src/index.js 如果你不使用 redux-thunk 你会得到一个错误。