【问题标题】:Dispatch with redux thunk使用 redux thunk 进行调度
【发布时间】:2021-08-24 11:46:55
【问题描述】:

我目前正在学习 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,
    })
  }
} 

它们都可以工作(至少对我来说),我的问题是第一个版本是如何工作的?

【问题讨论】:

  • 将[dispatch]放入依赖数组的原因是什么?
  • React hooks lint 规则不允许这样做并不断警告我应该将它放在依赖项列表中。您可以在 redux 文档中了解更多信息
  • 您可以使用useSelector来加载数据。 useEffect 与 store.dispatch 依赖关系不是正确的方法。实际上在useEffect 中我们应该观察组件级别的对象,如果您观察到外部对象,那么只要外部对象发生变化,您的组件就会重新加载。
  • “我的问题是第一个版本是如何工作的?” redux-thunk 允许你调度被调用的函数:github.com/reduxjs/redux-thunk/blob/…。如果你没有使用 redux-thunk 你会得到一个错误。
  • 谢谢。我以为是新功能,所以我很困惑

标签: javascript react-redux redux-thunk


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2020-08-18
    • 2021-04-05
    • 2018-06-25
    • 1970-01-01
    • 2017-05-25
    • 1970-01-01
    • 2019-04-06
    • 2016-11-23
    • 2017-09-16
    相关资源
    最近更新 更多