如何在redux-thunk动作创建器中导入getState和分派?

问题描述 投票:-1回答:2
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 });
};

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

reactjs redux-thunk
2个回答
0
投票

好的,我会尽力消除您的困惑,如您所知,动作创建者返回普通的javascript对象,但是thunk是一种中间件,它允许您从函数创建者返回函数而不是普通的javascript对象,因此当您使用thunk时,如果您从动作创建者返回plain javascript对象以常规方式处理,但是当您从动作创建者返回function而不是thunk处理它并使用dispatchgetState调用此函数时,可以异步地分派动作,传递这些参数,以这种方式查看,即您从动作创建者返回callback并通过这些参数thunk调用此回调。

希望有帮助。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.