vant中list组件的使用/点击加载更多数据

本文介绍了如何在Vue.js项目中使用API从book.js文件向后端发送GET请求,并详细展示了如何在商城页面上使用v-for指令遍历和渲染数据,包括数组、对象、数字以及数据分页功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1.在api/book.js中写向后端发送请求的接口

import request from "../utils/request";

export function fetchList(query){
    return request({
        method:"get",
        url:"book/lists",
        params:query,
    })
}

2.商城页面详写

(1)templat

v-for用法(转载)

访问数组

用法:使用v-for="item in list"的写法,依次取出list中的所有item,或者使用v-for="(item,i) in list",依次取出list中的所有item和它们对应的索引i

访问对象数组

用法:使用v-for="user in list ",依次取出list中的每个对象user,或者使用v-for="(user,i) in list",依次取出list中的每个对象和它们对应的索引

访问对象

用法:使用v-for="(val,key) in list",依次取出list中的每个对象的键和值,或者使用v-for="(val,key,i) in list",依次取出list中的每个对象的键,值和索引

迭代数字

用法:使用v-for="count in 10",迭代次数将从1开始,一直迭代至10

<div>
    <van-nav-bar title="商城" left-text="返回" @click="back" left-arrow>
      <template #right>
        <van-icon name="search" size="18" @click="search" />
      </template>
    </van-nav-bar>
    <!-- 标题 -->

    <van-tabs v-model:active="active">
      <van-tab title="综合">
        <van-row>
          <van-col span="12" v-for="item in records.slice(0, length)" :key="item.index">
            <van-col span="24">
              <van-image :src="item.image" />
            </van-col>
            <van-row>
              <van-col span="17" class="name">《{{ item.bookname }}》</van-col>
              <van-col span="7" class="price">¥{{ item.price }}</van-col>
            </van-row>
          </van-col>
        </van-row>
  </van-tab>
      <van-tab title="价格">内容 2</van-tab>
      <van-tab title="新品">内容 3</van-tab>
    </van-tabs>
    <!-- 标签页 -->
    <p v-if="loading" @click="more()" class="more">点击加载更多</p>
    <p v-if="finished" @click="more()" class="more">没有更多了</p>
    <!-- 底部 -->
  </div>

(2)css部分

.header {
  text-align: center;
  font-size: 18px;
  font-weight: 600;
}
.name {
  color: black;
  text-align: left;
}
.price {
  color: red;
}
.footer {
  text-align: center;
}
.more {
  text-align: center;
}

(3)script部分data声明

created生命周期:在组件实例处理完所有与状态相关的选项后调用。当这个钩子被调用时,以下内容已经设置完成:响应式数据、计算属性、方法和侦听器。然而,此时挂载阶段还未开始,因此 $el 属性仍不可用。

import { fetchList } from '@/api/book'
export default {
  data() {
    return {
      listQuery: {
        page: 1,
        limit: 40
      },
      loading: true,
      finished: false,
      num: 6, //默认加载数
      length: 6, //数组显示的元素个数
      records: [
        {
          id: 0,
          bookname: '',
          price: 0,
          image: ''
        }
      ]
    }
  },
  created() {
    this.getList()
  },

  methods: {
    getList() {
      fetchList(this.listQuery).then((response) => {
        this.records = response.data.data.records
      })
    },
    more() {
      for (let i = 1; i < 4; i++) {
        if (this.length < this.records.length) {
          this.length += this.num
          this.loading = true
          // console.log(this.length)
          //   console.log(this.records.length)
        } else {
          this.loading = false
          this.finished = true
        }
        // console.log(this.loading, this.finished, this.length >= this.records.length)
        break
      }
    },
    search() {
      this.$router.push('/')
    },
    back() {
      this.$router.push('/')
    }
  }
}

2.后端

1e50ab56979d47548977a4ed74da4d08.png

3.控制台

9735d8915854475092d05bb60e06d2a2.png

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值