- 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 条
- 全部回答
-
淞南 普通会员 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函数就可以在收到异步请求后立即更新状态,而不需要等待请求的结果返回。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

