当前位置: 首页 > news >正文

手机网站建设制作成都网站建设专家

手机网站建设制作,成都网站建设专家,个人做商贸网站,网站推广好难async thunk 解决 API 调用的依赖问题 一句话节省看下面一堆内容的时间就是#xff1a; async thunk 中可以使用 async/await 锁住其他的 action 操作 一般 API 之间存在三种情况#xff1a; A 和 B 之间没有依赖关系 这样的情况下#xff0c;A 和 B 可以各调用各的#x…async thunk 解决 API 调用的依赖问题 一句话节省看下面一堆内容的时间就是 async thunk 中可以使用 async/await 锁住其他的 action 操作 一般 API 之间存在三种情况 A 和 B 之间没有依赖关系 这样的情况下A 和 B 可以各调用各的哪块数据拉完就先渲染哪块 B 依附于 A 进行调用 比如说有些数据只有用户登录后才能获取 A 和 B 必须同时完成调用 这个就没什么好多说的 第一点和第二点就算是原生的 Redux处理起来虽然稍微有些的麻烦不过实现起来相对而言也比较简单。第三点使用原生的 Redux 处理起来就比较麻烦以前实现的方式大致如下 // in action file // ... function fetchSomeData() {// call api to store datareturn dispatch {batch(() {dispatch(fetchData1());dispatch(fetchData2());dispatch(fetchData3());// ..some more dispatches...});} } ...// in react component dataLoaded(){// ....retrieve all the data from different places...if (!data1) return false;if (!data2) return false;// ...check all the data...return true; }// ... render() {if (this.dataLoaded()) {return actual_content;} else {return loading_content;} } // ...之前想如果可以这样调用的话就方便了 function fetchSomeData() {// call api to store datareturn dispatch {Promise.all([dispatch(fetchData1());dispatch(fetchData2());dispatch(fetchData3());// ...some more dispatches...]).then(() dispatch(setLoading(false)));} }可惜当时的 batch 还不支持这个操作因此大多数情况下借用第三方的工具如 Redux Saga 之类的实现这种功能会比较方便。不过从 Redux Toolkit 之后就可以比较方便的使用 Promise.all 进行实现了。 大致的实现方法如下 userSlice import { createAsyncThunk, createSlice } from reduxjs/toolkit; import axios from axios;export const userSlice createSlice({name: user,initialState: {data: [],isLoading: false,error: null,},extraReducers(builder) {builder.addCase(fetchUsers.pending, (state, action) {state.isLoading true;});builder.addCase(fetchUsers.fulfilled, (state, action) {state.isLoading false;state.data action.payload;});builder.addCase(fetchUsers.rejected, (state, action) {state.isLoading false;state.error action.error;});}, });export const fetchUsers createAsyncThunk(users/fetch, async () {const response await axios.get(https://jsonplaceholder.typicode.com/users);console.log(new Date());return response.data; });export const usersReducer userSlice.reducer;postSlice // similar configuration as user function later(delay) {return new Promise(function (resolve) {setTimeout(resolve, delay);}); }export const fetchPosts createAsyncThunk(posts/fetch, async () {await later(5000);const response await axios.get(https://jsonplaceholder.typicode.com/posts);console.log(new Date());return response.data; });另一个调用这两个 slice 的 thunk // similar configuration as previous export const fetchHome createAsyncThunk(home/fetch,async (_, thunkAPI) {const res await Promise.all([thunkAPI.dispatch(fetchUsers()),thunkAPI.dispatch(fetchPosts()),]);console.log(res);return [];} );在组建中就可以直接调用 fetchHome实现结果如下
http://www.dnsts.com.cn/news/61875.html

相关文章:

  • 开一个网站的流程深圳坪山网站建设公司
  • 网站制作建设案例替人做非法网站
  • 网站建设禁止谷歌收录的办法网络运营者不是指
  • 网站怎么挂广告北京网络网站推广
  • 做网站能带来什么问题网站集约建设
  • 佛山网站建设锐艺a068网站资源如何做参考文献
  • 做网站服务好网站模版购买发布
  • 作风建设方面的网站3000部末年禁止app软件
  • 企业网站站内优化重庆网站制作招聘
  • 金山品牌网站建设wordpress 4.8.2 主题
  • 网络网站设计培训阿里云linux服务器搭建多个网站
  • 阿里大鱼 wordpress重庆seo整站优化服务
  • 58网站建设58xiamen租服务器价格一览表
  • 男女做暧暧试看网站49女的和男的做那个视频网站
  • 潮州网站设计南通网站建设方案服务
  • 企业网站建设开发服务wordpress开放哪个端口
  • 企业推广网络营销青岛官网seo推广
  • 互联网公司手机网站wordpress缩略图利器
  • 网站建设ppt演示文档重庆勘察设计网
  • 上海网站推广公司施工企业成本管理制度
  • 网站建设的总体目标考核指标嵌入式软件开发工资
  • 企业网站目的苏州专业做网站的公司哪家好
  • 技术型网站做哪一种好推广网站站群
  • 网站建设淘宝模板建站公司专业地址
  • 网站建设技术保证怎么写沧州网站设计哪家好
  • 宿州科技网站建设时间管理系统 网站开发
  • 网站安全检测软件苏州优化平台
  • 好看简单易做的网站关于网站设计的书
  • 多点网络网站制作系统帮助做问卷调查的网站
  • 网站建设怎么创业网站图片优化