javascript - Dispatch 不将操作发送到 reducer

标签 javascript reactjs react-redux

我有一个 React Redux 应用程序,但在将操作分派(dispatch)到 reducer 时遇到问题。这就是我的 actions.js 中的内容

import GetDataFromAPIs from "../utils/api-data";
export const UPDATE_DATA = 'UPDATE_DATA';

export const updateData = async => {
    const newData = await GetDataFromAPIs();

    return{
        type: UPDATE_DATA, 
        payload: newData
    };
};

这就是我从index.js调用updateData的方式:

const menuStore = createStore(MyReducer, composeWithDevTools(applyMiddleware(thunk)));
menuStore.dispatch(applyMiddleware(thunk)(updateData));

我可以单步执行 actions.js,但我没有看到 menuStore.dispatch 将操作发送到 reducer 。我错过了什么?

最佳答案

使用 thunk 中间件时,您需要将 'thunk' 传递给调度函数。
首先,thunk 需要一些修改。正如文档所说 here

A thunk is a function that wraps an expression to delay its evaluation

因此需要如下更改thunk。

export const updateData = async (dispatch)=> {
   const newData = await GetDataFromAPIs();

   dispatch({
      type: UPDATE_DATA, 
      payload: newData
    });
};

现在将此 thunk 传递给 store.dispatch() 函数。

menuStore.dispatch(updateData);

关于javascript - Dispatch 不将操作发送到 reducer ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61052754/

相关文章:

javascript - ( ) 内的声明函数

javascript - 使用 onclick 渲染对象数组中的数据

javascript - JSDoc - 从函数返回 * 是什么意思?

javascript - 如何正确包含dojo?

javascript - CSS3 动画点击

javascript - 使用 Context API 在非嵌套组件之间传递变量

javascript - 终极版 : cloning state does not work

node.js - React-Redux大型自定义数据表

javascript - 如何用纯 javaScript 替换 .prevAll() 和 .addBack()

javascript - ReactJS onChange,如果嵌套 hash/json