uniapp学习(008-1 对接API)

零基础入门uniapp Vue3组合式API版本到咸虾米壁纸项目实战,开发打包微信小程序、抖音小程序、H5、安卓APP客户端等

总时长 23:40:00 共116P

此文章包含第83p-第p92的内容



对接API

在这里插入图片描述

写几个接口
在这里插入图片描述
在这里插入图片描述

封装request方法

新建一个request.js

封装一个request方法 返回值为Promise对象
在这里插入图片描述
编写success判断方法
在这里插入图片描述
使用解构方法传入参数,这里也设置一下默认值(config={}) 如果没有传东西过来的话就是{}
在这里插入图片描述

编写一个apis.js文件 用来调用api接口

在这里插入图片描述

可以把api请求前面的公共部分提出来

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

传参的api

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

向内再近一层
在这里插入图片描述

组件调用的时候 ,只解构出这个页面需要的api

在这里插入图片描述
在这里插入图片描述

分类模块

给分类数据添加默认值

在组件里
在这里插入图片描述
在这里插入图片描述
在页面里
在这里插入图片描述

设置更新事件的标签

超过3个月不显示标签,逻辑有点复杂,我们可以直接使用 ai对这段逻辑的js代码进行编写
这里使用的是莫尼卡(Monica)
在这里插入图片描述

创建一个通用的js工具文件
在这里插入图片描述

在这里插入图片描述

获取页面参数

onLoad可以获取页面传参
在这里插入图片描述

defineProps也可以从setup生命周期里获取的页面参数

vue3生命周期执行顺序

在这里插入图片描述

触底加载更多

onTeachBottom 触底事件
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

数据拼接
在这里插入图片描述

如果数据到底了 就不要发送请求了 我们使用一个布尔类型的标志作为判断条件
在这里插入图片描述
我们判断最后一次传来的数据长度是否与得到的长度相等 不相等代表已经是最后一页了
在这里插入图片描述

在这里插入图片描述

骨架屏

vue官方扩展组件没有骨架屏,我们自己在插件市场查找骨架屏

在这里插入图片描述

在这里插入图片描述

加载框

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

length为0的时候才出现
在这里插入图片描述

如果一个分类无数据,也要让它消失 这里我们使用上面的哪个noData即可
也可以直接利用status属性可以来达到效果
在这里插入图片描述

下面的使用这个

在这里插入图片描述

在这里插入图片描述

设置底部高度

在这里插入图片描述

在这里插入图片描述
安全高度界面
在这里插入图片描述

<think>好的,用户想了解uniappuni-file-picker组件的使用方法和示例。首先,我需要回忆一下uni-file-picker的基本功能,它是用于文件上传的组件,支持选择图片、视频等文件,并且可以配合云存储使用。接下来,我应该按照用户提供的引用内容,特别是引用[2],里面提到了结合canvas添加水印的例子,可能需要将这点整合到教程中。 首先,我应该介绍组件的基本用法,比如如何引入到页面中,基本的属性设置,比如file-mediatype指定文件类型,file-extname指定后缀,limit限制数量等。然后,需要说明事件处理,比如@select选择文件后的回调,@progress上传进度,@success和@fail的处理。 然后,用户提供的引用[2]中提到将水印方法抽离成组件,这部分可以作为高级用法示例。需要展示如何在选择文件后,调用子组件的方法添加水印。可能需要解释waterMarker.vue子组件的结构,以及如何在父组件中引用它,传递图片路径,然后处理水印后的图片上传。 同时,用户可能对实际应用中的常见问题感兴趣,比如如何限制文件类型、大小,如何显示预览,如何与后端接口对接等。应该覆盖这些常见问题的解决方法,比如使用uni.uploadFile进行上传,处理服务器响应。 需要注意用户提供的引用内容中的细节,比如uni.downloadFile和uni.saveFile,虽然问题主要是关于uni-file-picker,但可能在上传后的处理中涉及这些API,可以适当提及。 最后,按照用户的要求生成相关问题,这些问题应该围绕组件的其他功能、优化方法、结合其他API的使用,比如如何自定义样式,多平台适配问题,大文件分片上传等。 检查是否有遗漏的部分,比如代码示例的正确性,确保使用中文回答,格式符合要求,特别是LaTeX部分,但在这个问题中可能用不上数学公式,所以可能不需要添加。确保引用标记正确,比如引用[^2]在讲解水印部分添加。最后保持结构清晰,分步骤说明,并提供示例代码。</think>### uni-file-picker 组件使用教程 #### 1. 基本功能与属性 uni-file-picker 是用于实现文件选择、上传的组件,支持图片、视频、文件等类型。通过以下属性控制行为: - `file-mediatype`:指定文件类型(`image`/`video`/`all`) - `file-extname`:限制文件后缀(如`.jpg,.png`) - `limit`:限制选择文件数量 - `mode="grid"`:启用九宫格预览模式 #### 2. 基础示例代码 ```html <template> <view> <uni-file-picker file-mediatype="image" :limit="3" @select="handleSelect" @progress="handleProgress" @success="handleSuccess" ></uni-file-picker> </view> </template> <script> export default { methods: { handleSelect(files) { console.log('已选择文件:', files.tempFiles) }, handleProgress(e) { console.log('上传进度:', e.progress) }, handleSuccess(res) { console.log('上传成功:', res.data) } } } </script> ``` #### 3. 添加水印功能(结合子组件) 引用[2]中提到的水印组件集成方法: 1. **创建子组件** `waterMarker.vue`: ```html <template> <canvas canvas-id="watermarkCanvas"></canvas> </template> <script> export default { methods: { addWatermark(src) { return new Promise((resolve) => { const ctx = uni.createCanvasContext('watermarkCanvas') // 绘制图片与水印文字 ctx.drawImage(src, 0, 0, 300, 200) ctx.setFontSize(14) ctx.fillText(new Date().toLocaleString(), 10, 190) ctx.draw(false, () => { uni.canvasToTempFilePath({ canvasId: 'watermarkCanvas', success: (res) => resolve(res.tempFilePath) }) }) }) } } } </script> ``` 2. **父组件调用**: ```html <template> <view> <water-mark ref="marker"></water-mark> <uni-file-picker @select="addMark"/> </view> </template> <script> export default { methods: { async addMark(files) { const marked = await this.$refs.marker.addWatermark(files.tempFilePaths[0]) uni.uploadFile({ url: 'https://api.example.com/upload', filePath: marked, name: 'file' }) } } } </script> ``` #### 4. 核心配置说明 | 属性 | 类型 | 说明 | |--------------|------------|-------------------------------| | auto-upload | Boolean | 是否自动上传(默认true) | | disablePreview | Boolean | 禁用预览功能 | | del-icon | String | 自定义删除图标 | #### 5. 文件管理相关API - 手动上传:通过 `ref` 调用 `upload()` - 删除文件:`remove(index)` - 清空文件:`clear()`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值