学习Uni-app开发小程序Day24

2024-05-24 12:28
文章标签 学习 程序 app 开发 uni day24

本文主要是介绍学习Uni-app开发小程序Day24,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这一章节是要将从首页的点击进入子组件,然后展示对应的数据。这里涉及到页面传递参数、将获取的数据渲染到页面上

给组件通过defineProps声明变量传值渲染

因为使用的是子组件,那就需要再父组件中点击后,给子组件传递参数,根据参数得到对应的数据并渲染到页面上。效果图:
在这里插入图片描述
在初始进入页面时,就要获取这里的数据,数据包含了图片缩略图、时间、图片类型。

	// 获取专题精选的图片地址const classifyList=ref([])const getClassify = async () => {let res=await apiGetClassify({pageSize:8});classifyList.value=res.data}getClassify();

先要获取数据,这是获取数据的方法,上一章已经学习了将网络请求进行封装,这里直接调用接口就可以了,获取到数据后,那要怎么给子组件传递参数?这就需要使用defineProps声明变量后,在从父组件传递数据过去。
子组件声明变量:

defineProps({isMore: {type: Boolean,default: false},item: { //数据源type: Object, //类型,因为是传对象,这里使用Objectdefault () { //这里定义对象的参数return {name: "默认名称",picurl: "../../common/images/classify1.jpg",updateTime: Date.now() - 1000 * 60 * 60 * 5}}}})

子组件定义了对象接收的参数,那父组件要怎么传递呢?
在这里插入图片描述
直接使用子组件定义的对象名后,这里就使用:item=“item”,将需要的数据传递过去。
子组件接收到数据后,直接使用定义的对象名将数据渲染到页面上
在这里插入图片描述
这里圈出的是什么?查看数据源,发现服务器给的是一时间戳,那如何将时间戳更改成效果图的形式?例如:大于1分钟小于1小时的时候,页面显示的是多少分钟前发布的。这种情况要如何编写?这里就要说下ChatGPT强大了,可以直接使用AI编写,将编写的js放在公共模块下,这里就可以直接使用了,下面把AI写的js贴出来

export function timeDifference(timestamp) {const now = new Date().getTime();const difference = now - timestamp;const minute = 60 * 1000;const hour = 60 * minute;const day = 24 * hour;const month = 30 * day;if (difference < minute) {return '1分钟';} else if (difference < hour) {return Math.floor(difference / minute) + '分钟';} else if (difference < day) {return Math.floor(difference / hour) + '小时';} else if (difference < month) {return Math.floor(difference / day) + '天';} else if (difference < 3 * month) {return Math.floor(difference / month) + '月';} else {return null;}
}export function gotoHome(){uni.showModal({title:"提示",content:"页面有误将返回首页",showCancel:false,success: (res) => {if(res.confirm){uni.reLaunch({url:"/pages/index/index"})}}})
}

当AI给出的是当前页面的方法,我们把这个放在公共区域,那就需要把该方法暴露出去,其他地方才能使用,在方法前面添加 export就好

组件深层跳转传参和多参数网络请求

上面组件已经显示数据了,那如果要看同类型下的其他数据呢,只用点击进入后,就可以继续访问网络数据了,那组件跳转如何传递参数呢?
在这里插入图片描述
在前面学习跳转的时候,已经学习了组件跳转传参的方式,第一个参数是使用’?‘的形式,第二个以后得参数,要使用’&'将所有参数拼接起来,
那如何接收呢?
我们使用onLoad()接收,这里记着,使用onLoad接收的时候,要在当前页面引用@dcloudio/uni-app,不然是不能使用的。
在onLoad接收的时候,可以直接得到传递的参数,

onLoad((e)=>{let{id=null,name=null}=equeryParams.classid=id;uni.setNavigationBarTitle({title:name});getClassList(); //获取数据})

这就是接受参数后再访问网络,这里需要注意,因为uni-app的生命周期,这里不能把网络访问放在下面调用,必须放在onLoad之后访问。

多参数访问网络数据

这里访问服务器获取数据的时候,就需要传递进入页面的类型、id、数量等,这就是多个参数,为了方便我们,直接在外部定义一个空对象,将需要传递的参数全部写到对象中,给对象一个默认值。然后在onLoad中给对象赋值,使用的时候,可以直接使用对象名就能把所有的参数传递过去,我们已经在网络请求中进行了封装了。
在这里插入图片描述
这里特别提醒下,也是我犯下的错,在这里插入图片描述
我已经定义了对象,在请求的时候,将对象传递过去,我是把对象放在{}中,死活获取不到,最后各种尝试,才发现,居然把对象又放在对象中,这样服务器解析的时候,就没办法拿到定义的参数名了,这里说下,大家谨记

下面是这个页面的详细逻辑代码

<template><view class="classlist"><view class="content"><navigator url="/pages/preview/preview" class="item" v-for="item in classList" :key="item._id"><image :src="item.smallPicurl" mode="aspectFill"></image></navigator></view></view>
</template><script setup>import {ref} from 'vue';import {apiClassList} from "@/api/apis.js"import {onLoad,onReachBottom} from "@dcloudio/uni-app"const classList = ref([]);const queryParams={ //对象设置默认值classid:0,pageNum:1,pageSize:9}onLoad((e)=>{let{id=null,name=null}=equeryParams.classid=id;uni.setNavigationBarTitle({title:name});getClassList();})const getClassList = async () => {let res = await apiClassList(queryParams);classList.value = res.data;}
</script><style lang="scss" scoped>.classlist {.content {display: grid;grid-template-columns: repeat(3, 1fr);gap: 5rpx;padding: 5rpx;.item {height: 440rpx;image {width: 100%;height: 100%;display: block;}}}}
</style>

这章就到这里了,加油加油!!!

这篇关于学习Uni-app开发小程序Day24的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/998399

相关文章

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

python编写朋克风格的天气查询程序

《python编写朋克风格的天气查询程序》这篇文章主要为大家详细介绍了一个基于Python的桌面应用程序,使用了tkinter库来创建图形用户界面并通过requests库调用Open-MeteoAPI... 目录工具介绍工具使用说明python脚本内容如何运行脚本工具介绍这个天气查询工具是一个基于 Pyt