Reactjs 对Redux createAction和dispatch感到困惑

Reactjs 对Redux createAction和dispatch感到困惑,reactjs,redux,react-redux,redux-actions,Reactjs,Redux,React Redux,Redux Actions,我想在React+Redux中构建一个函数,当用户单击按钮时,调用API并将数据加载到存储中,然后在页面上显示数据 我想使用redux actions框架:但我对我看到的不同示例有点困惑 在一些示例中,我看到以下内容: export const GET_USER_DATA = 'GET_USER_DATA'; export const getUserData = createAction( GET_USER_DATA, async () => { try {

我想在React+Redux中构建一个函数,当用户单击按钮时,调用API并将数据加载到存储中,然后在页面上显示数据

我想使用
redux actions
框架:但我对我看到的不同示例有点困惑

在一些示例中,我看到以下内容:

export const GET_USER_DATA = 'GET_USER_DATA';
export const getUserData = createAction(
  GET_USER_DATA,
  async () => {
      try {
          return await getUserInfo(config);
      } catch (error) {
          console.log("Error occurred");
      }
  },
);
然后我看到了其他使用
dispatch
的示例,如下图所示(摘自:):

我是一个新的反应和重复,我试图理解为什么/什么时候你会做一个或另一个

关于第一个例子,我有一个问题:
-如果不调用
dispatch
,减速机是否能够执行此操作?如果是这样,在不调用dispatch的情况下如何工作?

我不太熟悉redux操作库,但我认为在第一个示例中,您创建的是一个操作,但有一个有效负载。这里的负载是从创建者中的异步函数返回的内容。第二部分(功能)是payloadCreator。我通过查看相关代码来说明:

因此,对于第一个示例,其余部分按常规流动。createAction创建了一个带有有效负载的操作,并在handleActions中使用它。所以,对于你的最后一个问题,没有呼叫调度,减速机就不知道发生了什么。你不必担心在这里发送,因为你无论如何都是在你的应用程序中发送的。但是,我在图书馆的文档或其创建者的教程中没有看到这样的例子

对于第二个示例,我们在这里使用redux thunk来执行异步作业和多个操作。因此,我们可以在那里使用异步作业,并在action creator中执行多个有条件的操作。比如分派不同的动作创建者。fetchPhraseRequest()和fetchPhraseResponse()在这里是两个不同的操作,针对不同的情况进行调度。也许第一个启动一个进程并设置“抓取”状态,然后第二个得到响应并正确设置状态。我们甚至可以在错误块中使用其他单独的错误操作,如fetchphrasererror()


如果您的目标是更深入地消化Redux,我建议您使用纯Redux和Redux thunk。您将了解整个异步过程,至少对我来说是这样。

您在哪里看到了第一个示例?
const fetchPhraseRequest = createAction('PHRASE_FETCH_REQUEST');
const fetchPhraseResponse = createAction('PHRASE_FETCH_RESPONSE');
export const clearPhrase = createAction('PHRASE_CLEAR');
export const fetchPhrase = () => (dispatch) => {
  dispatch(fetchPhraseRequest());
  fromAPI.getPhrase()
    .then((value) => {
      dispatch(fetchPhraseResponse(value));
    })
    .catch((err) => {
      dispatch(fetchPhraseResponse(err));
    });
};