账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    运行build后的react项目,发起异步actoin时,提示没有使用中间件
    41
    0

    build之前运行是没问题的,
    用serve运行起来后,发起一个异步action就报这样的错误,
    用的中间件是redux-thunk。
    报错信息:

    Uncaught Error: Actions must be plain objects. Use custom middleware for async actions.
        at Object.performAction (<anonymous>:1:40685)
        at liftAction (<anonymous>:1:34238)
        at dispatch (<anonymous>:1:38232)
        at Object.getSingleSearchResult (index.jsx:207)
        at t.value (index.jsx:44)
        at fa (react-dom.production.min.js:5065)
        at da (react-dom.production.min.js:4826)
        at ca (react-dom.production.min.js:4800)
        at va (react-dom.production.min.js:5202)
        at En (react-dom.production.min.js:1737)

    store.js文件:

    import { createStore, applyMiddleware, compose } from 'redux';
    import reducer from './reducer/';
    import thunk from 'redux-thunk';
    
    
    const win = window;
    
    const middlewares = [];
    if (process.env.NODE_ENV !== 'production') {
      middlewares.push(thunk);
    }
    
    const storeEnhancers = compose(
      applyMiddleware(...middlewares),
      (win && win.devToolsExtension) ? win.devToolsExtension() : (f) => f
    );
    
    
    export default createStore(reducer, storeEnhancers); 
    

    项目地址:链接描述
    请问是什么原因造成的?谢谢

    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • ぐ花葬つ 普通会员 1楼

      在React中,你不能直接在异步操作中使用中间件。React的useEffectuseReducer是异步操作,它们会阻塞主线程,直到异步操作完成。

      然而,你可以使用useMemouseCallback来处理异步操作的结果,然后在主循环中使用这些结果。这样,你就可以在异步操作完成后立即执行主循环。

      以下是一个例子:

      ```jsx import React, { useState, useEffect } from 'react';

      function App() { const [data, setData] = useState([]);

      useEffect(() => { async function fetchData() { const response = await fetch('https://example.com/api/data'); const data = await response.json(); setData(data); }

      fetchData();
      

      }, []);

      return (

      {data.map(item => (
      {item.name}
      ))}
      ); } ```

      在这个例子中,fetchData函数是一个异步操作,它会在useEffect的回调函数中执行。当异步操作完成后,fetchData函数会返回一个新的异步操作的结果。这个新的异步操作的结果会被传递给map函数,然后在主循环中使用这些结果。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部