Reactjs 如何在redux thunk action creator中导入getState和dispatch?
在上面的代码中,getState和dispatch函数作为参数传递给action creator函数,我感到困惑的是,为什么这些函数没有从任何地方导入,或者react/redux以某种方式为我们导入了它们?好的,我将试着澄清您的困惑, 正如您所知,action creators返回纯javascript对象,但thunk是一个中间件,它允许您从action creators返回函数而不是纯javascript对象,因此当您使用thunk时,如果您从action creator返回纯javascript对象,它将以正常方式处理,但是,当您从action creator返回一个函数时,thunk会处理它,并使用dispatch和getState调用此函数,这样您就可以异步调度一个操作,而不是传递这些参数,这样看,您将从action creator返回一个回调,并使用这些参数thunk调用此回调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
希望能有帮助 当您使用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 });
};