在react redux docs的reddit示例中,即使从未导入过actions.js,它们如何访问dispatch和getState函数?我以为你必须在你使用的每个文件中导入每个方法。
答案 0 :(得分:1)
代码使用thunk middleware,请阅读async actions部分以了解详情。
答案 1 :(得分:1)
它无法访问外部库中的函数。
在fetchPostsIfNeeded
中,这些是本地定义的函数参数。只要重命名调用参数的其余代码,就可以将它们重命名为任意内容。例如
export function fetchPostsIfNeeded(subreddit) {
return (fireAction, findState) => {
if (shouldFetchPosts(findState(), subreddit)) {
return fireAction(fetchPosts(subreddit))
}
}
}
与
一样有效export function fetchPostsIfNeeded(subreddit) {
return (dispatch, getState) => {
if (shouldFetchPosts(getState(), subreddit)) {
return dispatch(fetchPosts(subreddit))
}
}
}
但是,命名对于文档来说是用户友好的,因为fetchPostsIfNeeded期望能够通过redux管道调度内部动作创建者fetchPosts()
。
在这种情况下,真实商店的调度功能很可能是通过道具进行依赖注入,您可以考虑将其传递给匿名函数,作为参数,在动作创建者中继续使用该模式本身。
有很多关于良好模式的可靠视频,可让商店通过Dan Abramov free courses on egghead.io上的应用程序。