【发布时间】: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