《仿盒马》app开发技术分享--未完成订单列表展示逻辑优化(61)

简介: 上一节我们实现订单与优惠券的联合提交时,我去到订单列表页面查看生成的订单信息,发现现在的订单从信息展示到价格计算全都是有问题的。所以紧急的把对应的问题修改一下。

技术栈

Appgallery connect

前言:

上一节我们实现订单与优惠券的联合提交时,我去到订单列表页面查看生成的订单信息,发现现在的订单从信息展示到价格计算全都是有问题的。所以紧急的把对应的问题修改一下。

问题来源:

async aboutToAppear(): Promise<void> {
   
    const value = await StorageUtils.getAll('user');
    if (value != "") {
   
      this.user = JSON.parse(value)
    }
    if (this.currentIndexCheck==this.currentIndex) {
   
      let databaseZone = cloudDatabase.zone('default');
      let condition = new cloudDatabase.DatabaseQuery(order_list);
      condition.equalTo("user_id",this.user?.user_id).and().equalTo("order_status",0)
      let listData = await databaseZone.query(condition);
      let json = JSON.stringify(listData)
      let data1:OrderList[]= JSON.parse(json)
      this.orderInfo=data1



      let condition1 = new cloudDatabase.DatabaseQuery(order_product_list);
      condition1.equalTo("order_product_id",data1[0].order_product_id)
      let listData1 = await databaseZone.query(condition1);
      let json1 = JSON.stringify(listData1)
      this.productList=JSON.parse(json1)

      this.flag=true
    }
  }

我们可以看到,当我们进入到待发货页面的时候,我们进行了orderlist所有订单的请求,这里的请求是没有错的,我们继续向下,这时候我们通过条件进行数据查询

condition1.equalTo("order_product_id",data1[0].order_product_id)

这里我们直接拿了当前第一条数据放到list中去执行逻辑,这就会导致,我们列表的所有内容展示的都是第一条的相关商品和价格,展示的图片和价格都是一样的。

发现问题之后决定采用map来存储不同order_product_id对应的数据,这样我们在循环的时候用order_product_id来作为key ,取出对应的数据就好了。现在我们来进行修改。

//先定义一个全局的map接收内容
  @State mapList:Map<string,OrderProductList[]>|null=null


//在这里把原先只请求第一条的逻辑替换掉存到map中

```css
const myMap = new Map<string,OrderProductList[]>();
      for (let i = 0; i <data1.length; i++) {
   
        let condition1 = new cloudDatabase.DatabaseQuery(order_product_list);
        condition1.equalTo("order_product_id",data1[i].order_product_id)
        let listData1 = await databaseZone.query(condition1);
        let json1 = JSON.stringify(listData1)
        myMap.set(data1[i].order_product_id,JSON.parse(json1))

      }
      this.mapList=myMap

现在我们就拿到了所有的order_product_list对应的商品数据了,现在我们还缺少对应的价格计算

//因为我们列表是通过循环展示的,这样每次我们都只会取一条数据出来,所以我们只需要取出key 对应的数组中的第一条数据即可


 price(item:OrderList):number{
   
   const  money= this.mapList!.get(String(item.order_product_id))
    return  money![0].buyAmount*money![0].price
  }

在商品流数据展示的list我们也要吧数据源修改一下

  List({
   space:10}){
   
                  ForEach(this.mapList?.get(item.order_product_id),(pos:OrderProductList)=>{
   
                    ListItem(){
   
                      Column(){
   
                        Image(pos.img)
                          .height(60)
                          .width(60)
                          .borderRadius(5)
                      }
                    }
                  })
                }
                .padding({
   left:10})
                .width('100%')
                .listDirection(Axis.Horizontal)
                .height(80)

这样我们的列表页面就完成了逻辑优化,变得通顺了

相关文章
|
19天前
|
前端开发 JavaScript 索引
前端性能优化:虚拟滚动技术原理与实战
前端性能优化:虚拟滚动技术原理与实战
208 80
|
9天前
|
前端开发 C++ 容器
2025高效开发:3个被低估的CSS黑科技
2025高效开发:3个被低估的CSS黑科技
137 95
|
9天前
|
缓存 监控 前端开发
告别卡顿!3大前端性能优化魔法 + CSS容器查询实战
告别卡顿!3大前端性能优化魔法 + CSS容器查询实战
166 95
|
9天前
|
Web App开发 监控 前端开发
2025前端性能优化三连击
2025前端性能优化三连击
213 94
|
9天前
|
Web App开发 前端开发 JavaScript
CSS :has() 选择器:改变游戏规则的父选择器
CSS :has() 选择器:改变游戏规则的父选择器
197 95
|
15天前
|
存储 运维 JavaScript
《HarmonyOSNext应用崩溃自救指南:零数据丢失的故障恢复黑科技》
本文详解HarmonyOS Next应用崩溃时如何实现零数据丢失的故障恢复机制,涵盖API差异、核心接口与实战代码,助开发者提升App稳定性和用户体验。
126 65
|
15天前
|
监控 前端开发 JavaScript
HarmonyOSNext 崩溃急救指南:全局监听+同步退出 = 优雅保命!
本文介绍了HarmonyOS Next中Ark Ts的错误管理技巧,通过全局监听和同步退出机制实现应用崩溃保护。涵盖单线程、Promise及主线程卡死监控方案,并提供实战代码与避坑指南,帮助开发者优雅处理异常,保障用户体验。
124 65
|
3天前
|
机器学习/深度学习 人工智能 算法
Wi-Fi老是卡?不如试试让“深度学习”来当网络管家!
Wi-Fi老是卡?不如试试让“深度学习”来当网络管家!
110 68
|
12天前
|
移动开发 前端开发 JavaScript
HTML表单验证:确认input元素输入为具有特定整数和小数位数的数值。
将上述JavaScript代码与HTML一同使用,便可以确保用户输入的数值符合特定的格式要求。特别要注意,在实际的生产环境中,仅仅依靠前端验证是不够的。为了安全起见,后端也应该实施相应的验证措施,以防止不匹配格式的数据通过其他手段提交到服务器。
129 74
|
3天前
|
机器学习/深度学习 编解码 算法
ABoVE:2000-2015 年阿拉斯加和育空地区四十英里驯鹿牧场的地衣饲料覆盖
该数据集提供2000–2015年阿拉斯加Fortymile驯鹿活动区及加拿大育空地区的地衣覆盖信息,分辨率达30米。通过随机森林模型结合植被、环境与光谱数据,估算地衣覆盖率,并利用无人机影像生成高精度站点级地图,支持驯鹿栖息地研究与保护。
96 65