uni-app文章列表制作⑨

文章目录

十三、文章列表制作-文章卡片

一、创建文章相关 listItem 组件

使用 scroll-view 实现竖向滚动容器制作,注意在样式定义时进行多级高度设定

vue 复制代码
<view class="list-scroll-container">
		<scroll-view scroll-y="true" class="list-scroll">
			<view>
				<ListCard v-for="item in 50" :key="item"></ListCard>
			</view>
		</scroll-view>
</view>
二、文章卡片组件定义
  1. 创建基本样式及结构
  2. 定义多状态卡片模块
    1. 通过父组件传递 mode 属性进行条件编译
    2. 根据条件进行选项卡卡片展示
三、定义 uniapp 模版
  1. 根目录下创建 index.html 文件
  2. 参考地址:https://uniapp.dcloud.io/collocation/manifest?id=h5-template
  3. manifest 文件的 html5 配置中进行 index.html 文件引入

十四、文章列表制作-数据渲染

一、云函数创建

定义 articleList 云函数

删除不需要返回的文章详情内容

react 复制代码
'use strict';
const db = uniCloud.database()
exports.main = async (event, context) => {
	const list = await db.collection('article')
	.aggregate()
	.project({
		content:0
	})
	.end()
	//返回数据给客户端
	return {
		code:0,
		msg:"数据请求成功",
		data:list.data
	}
};
二、前端进行数据获取
  1. articleList 组件 => created 钩子中进行数据获取

    react 复制代码
    created () {
        this._getArticleList()
      }
     methods: {
        async _getArticleList () {
          const articleList = await this.$http.get_article_list()
          this.articleList = articleList
        }
      }
三、数据渲染

listItem 组件中进行循环渲染使用

react 复制代码
<view class="list-scroll-container">
		<scroll-view scroll-y="true" class="list-scroll">
			<view>
				<ListCard :item="item" v-for="(item,index) in articleList" :key="index"></ListCard>
			</view>
		</scroll-view>
	</view>
四、根据选项卡分类进行数据渲染
  1. 添加全部分类选项

    react 复制代码
    async _intiLabelList() {
    				const labelList = await this.$http.get_label_list()
    				this.labelList = [{name:"全部"},...labelList]
    			}
  2. 请求 articleList 时进行数据传递

    1. 为了保证导航数据的正确获取,调整 created 函数的_getArticle_list 方法在 watch 中进行调用

      react 复制代码
       watch: {
          labelList(newVal,OldVal) {
          this._getArticleList()
          },
        },
  3. 云函数进行数据过滤调整

    js 复制代码
    "use strict";
    const db = uniCloud.database();
    exports.main = async (event, context) => {
      const { classify } = event;
    
      let matchObj = {};
    
      if (classify !== "全部") {
        matchObj = { classify };
      }
    
      const list = await db
        .collection("article")
        .aggregate() // 使用聚合的形式进行数据的获取
        .match(matchObj) // 根据匹配条件进行数据返回
        .project({
          content: 0, // 本次查询不需要返回文章详情给前端
        })
        .end();
      //返回数据给客户端
      return {
        code: 0,
        msg: "数据请求成功",
        data: list.data,
      };
    };
  4. 前端对数据进行缓存处理

    将原有接受内容数组转换为对象进行存储。每次 change 改变内容时进行判断操作处理

    使用$set 方法进行对象的页面重新渲染

    js 复制代码
    async _getArticleList (currentIndex) {
          const articleList = await this.$http.get_article_list({classify:this.labelList[currentIndex].name})
          this.$set(this.articleData,currentIndex,articleList)
        }
相关推荐
小时前端19 小时前
微信小程序选不了本地文件?用 web-view + H5 一招搞定
前端·微信小程序·uni-app
Mr_li2 天前
给 Vue 开发者的 uni-app 快速指南
vue.js·uni-app
anyup2 天前
🔥2026最推荐的跨平台方案:H5/小程序/App/鸿蒙,一套代码搞定
前端·uni-app·harmonyos
Mintopia3 天前
Vue3 项目如何迁移到 uni-app x:从纯 Web 到多端应用的系统指南
uni-app
Mintopia3 天前
uni-app x 发展前景技术分析:跨端统一的新阶段?
uni-app
不爱说话郭德纲3 天前
告别漫长的HbuilderX云打包排队!uni-app x 安卓本地打包保姆级教程(附白屏、包体积过大排坑指南)
android·前端·uni-app
HashTang5 天前
【AI 编程实战】第 12 篇:从 0 到 1 的回顾 - 项目总结与 AI 协作心得
前端·uni-app·ai编程
JunjunZ5 天前
uniapp 文件预览:从文件流到多格式预览的完整实现
前端·uni-app
郑州光合科技余经理5 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
TT_Close6 天前
“啪啪啪”三下键盘,极速拉起你的 uni-app 项目!
vue.js·uni-app·前端工程化