智能点餐系统项目总结(2)

红色  重点

紫色  问题

知识点回顾:

    react中的跳转逻辑+传参逻辑

1、关于跳转

  •    在项目的初步,先写好跳转逻辑。项目组的其它成员就可以根据这个跳转到对应的页面,方便于查找到对应的页面+方便查看整体的效果。(整体效果的查看很重要!!不然后期要修改很久)
  • 在App.js中,使用Router进行导航。先是HashRouter进行全包裹,然后div中是页面中显示的跳转按钮,Routes显示的跳转的逻辑。(Link to=/AIndex")就是跳转到AIndex中。
  • 如果要查看整体的效果,可以将div整体display:'none'。就可以查看出没有导航栏的效果。
  • 在其它页面的跳转,根据navigate进行。import { useNavigate } from 'react-router-dom';

2、关于传参

 从其它页面调转的时候希望带参数进行传递。

      

react中的数据更新问题(会出现数据更新后但是没有立刻显示在页面中,反应比较慢)

1、用户的个人中心(可以在表格中显示数据并且直接在表格中进行更改)

2、使用echarts时,遇到在option的时候就已经画好了图表,导致数据其实还没有加载完就画好图了。

方法:使用loading setLoading。就是添加一个加载,在完全获取完数据后再setLoading.

方法二:直接使用强制页面刷新的方法,就是在获取数据的那一刻进行强制刷新。(这种方法更适用于在编辑页面后进行强制更新。)

就是开始设置setLoading(true),然后在axios获取数据之后,再使用finally,setLoading(false)进行加载的取消,如果一直在加载,就返回提前写好的一个加载逻辑。

这样就能保证展示的时候有数据。

关于Fecharts页面

1、从后台获取数据后按照日期从大到小的排序

res.data.sort((a,b)=>new Date(b.orderDate)-new Date(a.orderDate));

先提取日期信息(作为图表的x轴坐标)

const orderDates=res.data?.map(item=>item.orderDate);

再提取金额信息(作为图表的展示数据)

const dayCount=res.data?.map(item=>item.totalMoney);

将数组转换成对象,其中的每个键是订单的日期,对应的值是一个对象,包含了该日期的总收入。

reduce方法是一个高阶函数,对数组进行累加操作。接受一个回调函数和一个初始值。回调函数的参数包含累加器和当前元素.

如果res.data中有多个对象的orderDate相同,后面的记录会覆盖前面的记录。

如果是希望按日期汇总收入,而不是覆盖,可以修改成下面的代码:

注意:echarts使用的时候,一定要转换成其能够使用的数据格式。

//转换成符号条件的格式

 const data=res.data;

const salesDataM=data?.map(item=>({

value:item.dishcount,//销量

name:item.dishname //菜品分类

category:'销量'  //固定分类

})

找到销量最高的菜品名

const highSalesDish=data.reduce((max,current)=>{

return current.dishcount>max.dishcount?current :max;

})

初始化:

使用:

salesChartRef是一个Ref,用于引用一个DOM元素(通常是一个<div>)这个元素是ECharts图表的容器。

  • if(salesChartRef.current)确保只有在容器元素存在时候才执行后续代码。
  • 初始化EChartt图表,const chart=echarts.init(salesChartRef.current)  使用ECharts的init方法初始化图表,传入容器元素salesChartRef.current.
  • 配置图表选项:const options

关于图表的设置问题;

data就是salesDataA.map就是遍历完item,并且itemStyle就是给每一个item设置对应的样式。

折线图(包含x轴和y轴)


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值