首页 > 解决方案 > 创建动作时出错:动作必须是普通对象

问题描述

调用操作时出现错误。我使用 dispatch 传输对象,但在此示例中它不起作用。告诉我错误是什么以及如何正确实施?

api.js

export const getTables = () => getReq('https://test.online/tests');

动作.js

export const getTables = () => {defaultAction("GET_TEST", Api.getTables)();}

实用程序.js

export const defaultAction = (constant, api) => async () => {
    const result = await api();
    return (dispatch) => {
        return dispatch({type: constant, payload: result})
    };
};

方法.js

export const getReq = (url) => {
    const promise = axios({
        method: 'get',
        url: url,
        credentials: 'include',
        mode: 'cors',
        headers: {
            Authorization: localStorage.getItem('token'),
        },
    });
    return promise.then((response) => response.data);
};

标签: reactjsreduxaxios

解决方案


您的getTables操作创建者缺少return语句并返回undefined。或者只是跳过{}

export const getTables = () => defaultAction("GET_TEST", Api.getTables)()

除了你在那里进行的奇怪的“构建一个函数然后立即执行它”模式之外,你也可以只是

export const getTables = defaultAction("GET_TEST", Api.getTables)

具有相同的效果。


推荐阅读