为什么出现错误“操作必须是普通对象。请对异步操作使用自定义中间件。”出现时,没有异步动作?

时间:2019-12-05 18:36:04

标签: reactjs react-redux redux-thunk

我试图更深入地了解React并停留在此错误上。 它不允许我调度任何动作。但是,我根本没有使用异步。 Here you can find codesandbox of the full app.

我已将thunkMiddleware添加到商店,因此该应用程序可以使用。 但是我不明白发生了什么事?

以下是动作创建者,我没有在其中分发。 我搜索了不同的类似答案,所有这些都与错误使用 异步动作。我的是同步的:

import CART_ACTIONS from "../action_types/cartActionTypes";

function addToCart(item) {
  return dispatch => dispatch({ type: CART_ACTIONS.ADD_ITEM, item: item });
}

function removeFromCart(item) {
  return dispatch => {
    dispatch({ type: CART_ACTIONS.REMOVE_ITEM, item });
  };
}

function clearCart(item) {
  return dispatch => {
    dispatch({ type: CART_ACTIONS.CLEAR_CART });
  };
}

export const cartActions = { addToCart, removeFromCart, clearCart };

1 个答案:

答案 0 :(得分:1)

如果您不想使用thunkMiddleware,则需要像这样更新cartAction:

import CART_ACTIONS from "../action_types/cartActionTypes";

function addToCart(item) {
   return({ type: CART_ACTIONS.ADD_ITEM, item: item });
}

function removeFromCart(item) {
    return({ type: CART_ACTIONS.REMOVE_ITEM, item });

}

function clearCart(item) {
    return({ type: CART_ACTIONS.CLEAR_CART });
}

export const cartActions = { addToCart, removeFromCart, clearCart };

简单来说,您只需要返回一个操作,该操作必须是具有type属性的对象和可选的有效负载。

codesandbox