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

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

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    关于redux的异步请求中间件问题
    32
    0

    问题是这样的,例如我现在有一个数据需要请求,将这个请求到的数据传递给redux,我的做法是这样(伪代码):

      function getData() {
        return fetch(...)
      }
      function fn() {
        getData().then(res=>{
          this.props.dispatch({
            type:'CHANGE_DATA',
            data:res
          })
        })
      }

    而利用中间件的话(redux-thunk),相当于给dispatch中塞了一个函数。本质的区别就是,我上面的做法,先执行了一个异步函数,再把结果给dispatch,而中间件是将这个函数放在了dispatch里面,所以这两个做法本质上不就没区别吗,为何还要用中间件?这是我的理解,不知道理解错误的地方在哪里,还希望大神朋友们能给个提醒,谢谢啦~

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 淞南 普通会员 1楼

      Redux是一个基于状态管理的JavaScript库,它的异步请求中间件可以用于处理异步请求,以防止在状态更新后立即返回请求的结果,从而提高应用程序的性能。

      以下是一个使用Redux的异步请求中间件的简单示例:

      ```javascript import { createStore, applyMiddleware } from 'redux'; import thunk from 'redux-thunk'; import axios from 'axios';

      const middlewares = [thunk];

      const store = createStore(reducer, applyMiddleware(middlewares));

      export default store; ```

      在这个例子中,我们首先导入了Redux的createStore函数,然后导入了axios模块,作为我们的异步请求中间件。我们还导入了thunk中间件,作为我们的异步请求中间件的默认实现。

      然后,我们创建了一个Redux store,它包含了一个reducer函数和一个applyMiddleware函数。reducer函数是我们需要处理的状态改变,applyMiddleware函数则是将reducer函数和其他中间件一起应用到store。

      最后,我们可以在store的useDispatch和useEffect钩子中使用applyMiddleware函数,将我们的异步请求中间件应用到store中。这样,我们的reducer函数就可以在收到异步请求后立即更新状态,而不需要等待请求的结果返回。

      以下是一个使用applyMiddleware函数的简单示例:

      ```javascript import { createStore, applyMiddleware } from 'redux'; import thunk from 'redux-thunk'; import axios from 'axios';

      const middlewares = [thunk];

      const store = createStore(reducer, applyMiddleware(middlewares));

      export default store; ```

      在这个例子中,我们仍然使用了applyMiddleware函数,只是将它应用于reducer函数和axios中间件。这样,reducer函数就可以在收到异步请求后立即更新状态,而不需要等待请求的结果返回。

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