Javascript 如何使操作可重用?使用Redux进行反应

Javascript 如何使操作可重用?使用Redux进行反应,javascript,reactjs,ecmascript-6,react-redux,Javascript,Reactjs,Ecmascript 6,React Redux,我需要做一个动态的动作。换句话说,它可以用于不同的操作 我试图创建一个加载类型和负载的函数,但出现了一个错误 我正在尝试使此功能正常工作: export function getData(url, type) { const request = Server.get(url) return (dispatch) => request.then((response) => {

我需要做一个动态的动作。换句话说,它可以用于不同的操作

我试图创建一个加载类型和负载的函数,但出现了一个错误

我正在尝试使此功能正常工作:

        export function getData(url, type) {
            const request = Server.get(url)

            return (dispatch) =>
            request.then((response) => {  
                    dispatch({
                        type: type,
                        payload: response.data
                    })
                }).catch(function (error) {
                    console.log(error)
                });
        }
但我这样调用这个函数时出错了:

        export function getClientes() {
            Actions.getData('ClientesEFornecedores', GET_CLIENTES)    
        }
        function ClientesTable(props)
        {
            const dispatch = useDispatch();
            const clientes = useSelector(({erpCliente}) => erpCliente.clientes.data);

            useEffect(() => {
                dispatch(Actions.getClientes());
            }, [dispatch]);
它显示:

        Uncaught Error: Actions must be plain objects. Use custom middleware for async actions.
我这样调用getClientes()函数:

        export function getClientes() {
            Actions.getData('ClientesEFornecedores', GET_CLIENTES)    
        }
        function ClientesTable(props)
        {
            const dispatch = useDispatch();
            const clientes = useSelector(({erpCliente}) => erpCliente.clientes.data);

            useEffect(() => {
                dispatch(Actions.getClientes());
            }, [dispatch]);

我如何使一个动作可以重复使用?

事实上,我几乎成功了。 剩下的就是返回函数调用

这就是工作方式:

        export function getClientes() {
            return dbActions.getData('ClientesEFornecedores', GET_CLIENTES)    
        }

试试这样的

export const getData=(url, type) =>async dispatch=>{

        try{
           const response = await Server.get(url);

           dispatch({ type: type,payload: response.data })

        } catch(err){
            console.log(err)
        }
    }

获取客户功能

export const getClientes=() => dbActions.getData('ClientesEFornecedores', GET_CLIENTES);


做得好!我只是不知道为什么要使用“异步调度”,如果我需要使用
async/await
而不是
then和catch
,我需要添加
async
<代码>异步/等待方法提供了更具可读性的代码。请跟着这个