Reactjs 如何在redux thunk action creator中导入getState和dispatch?

Reactjs 如何在redux thunk action creator中导入getState和dispatch?,reactjs,redux-thunk,Reactjs,Redux Thunk,在上面的代码中,getState和dispatch函数作为参数传递给action creator函数,我感到困惑的是,为什么这些函数没有从任何地方导入,或者react/redux以某种方式为我们导入了它们?好的,我将试着澄清您的困惑, 正如您所知,action creators返回纯javascript对象,但thunk是一个中间件,它允许您从action creators返回函数而不是纯javascript对象,因此当您使用thunk时,如果您从action creator返回纯javascr

在上面的代码中,getState和dispatch函数作为参数传递给action creator函数,我感到困惑的是,为什么这些函数没有从任何地方导入,或者react/redux以某种方式为我们导入了它们?

好的,我将试着澄清您的困惑, 正如您所知,action creators返回纯javascript对象,但thunk是一个中间件,它允许您从action creators返回函数而不是纯javascript对象,因此当您使用thunk时,如果您从action creator返回纯javascript对象,它将以正常方式处理,但是,当您从action creator返回一个函数时,thunk会处理它,并使用dispatchgetState调用此函数,这样您就可以异步调度一个操作,而不是传递这些参数,这样看,您将从action creator返回一个回调,并使用这些参数thunk调用此回调


希望能有帮助

当您使用redux提供的连接函数将react组件与redux连接时,您将传入函数:mapStateToProps和mapDispatchToProps。这些将是您要查找的参数(dispatch和getState)。

这些是函数的参数。该函数将通过传递它们来调用。在这种情况下不需要导入任何东西好吧,我觉得我现在问了一个愚蠢的问题,这里可能还有另一个问题,如果这些函数作为参数传递,它们来自哪里,它们仍然需要存在于当前模块中,才能作为参数传递,对吗,或者react是否从其他地方传递它们?为什么它们需要存在于当前模块中才能作为参数传递?这将大大降低函数的效用。您可以导出这些函数,以便它们可以在其他地方使用(可能连接到某个地方的redux存储)。
import _ from 'lodash';
import jsonPlaceholder from '../apis/jsonPlaceholder';

export const fetchPostsAndUsers = () => async (dispatch, getState) => {
  await dispatch(fetchPosts());

  _.chain(getState().posts)
    .map('userId')
    .uniq()
    .forEach(id => dispatch(fetchUser(id)))
    .value();
};

export const fetchPosts = () => async dispatch => {
  const response = await jsonPlaceholder.get('/posts');

  dispatch({ type: 'FETCH_POSTS', payload: response.data });
};