Vue项目实战:订单列表页面实现

本文详细介绍了在Vue项目中实现订单列表页面的全过程,包括调整Order父组件结构以解决Bug,订单列表数据渲染,加载状态(Loading)和无数据状态(NoData)的优化,以及分页功能的实现,包括分页器、加载更多和滚动加载功能。通过引入和使用ElementUI组件库,以及vue-infinite-scroll插件,实现了高效、友好的用户体验。
摘要由CSDN通过智能技术生成

目录

在这里插入图片描述

(1)调整Order父组件结构(解决Bug)

之前在Vue项目实战:订单确认页面实现中关于订单父组件结构封装里写到:在order.vue中引入<order-header></order-header>,然后通过路由判断当前页面属于哪个,并展示不同内容。但现在发现那样子做存在一个问题:

问题

在使用微信支付完后跳转到订单列表页面,但是订单列表页面中的<order-header></order-header>的内容仍是订单支付页面中<order-header></order-header>的内容,没有变成<order-header></order-header>对应的内容。但是如果跳转完订单列表页面,在重新刷新一下页面,那<order-header></order-header>的内容就会改变。

原因

订单列表的路由是order的子路由,当我们从order路由跳转到它的子路由时,并不会再次执行order.vue中的mounted()函数。此函数只有在页面渲染时才会执行。也就是说,如果想用之前的方法,那只有在第一次从别的路由(比如购物车路由)跳转到订单列表路由时,此前order页面并没有被渲染过,则可以出现相应的<order-header></order-header>组件内容。如果是从订单订单确认跳转到订单列表的话,此时没有重新渲染order页面,那<order-header></order-header>内容不会改变。

解决方法

不用之前的第二种方法,删去之前路由判断的代码,而用第一次,在每个页面中引入<order-header></order-header>

如,在orderConfirm.vue:

    <order-header title="订单确认">
      <template v-slot:tip>
        <span>请认真填写收货地址</span>
      </template>
    </order-header>
<script>
import OrderHeader from "./../components/OrderHeader";
export default {
  components: {
    OrderHeader,
  }
}
(2)订单列表数据渲染

在orderList.vue中:

<!-- 省略不重要代码,下面是如何判断并展示订单状态 -->
			<div class="good-state fr" v-if="order.status == 20">
                <a href="javascript:;">{
  {order.statusDesc}}</a>
              </div>
              <div class="good-state fr" v-else>
                  <a href="javascript:;" @click="goPay(order.orderNo)">{
  {order.statusDesc}}</a>
              </div>
<script>
  export default{
    
    data() {
    
        return {
    
            list: []
        }
    },
    mounted() {
    
        this.getOrderList();
    },
    methods: {
    
        getOrderList() {
    
            this.axios.get('/orders').then((res) => {
    
                this.list 
  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值