uni-shop 总结

news/2024/11/25 22:29:48/

1 配置http请求

小程序不支持 axios 因此使用插件
@escook/request-miniprogram 可以按需导入

import {$http} from '@escook/request-miniprogram'uni.$http = $http$http.baseUrl = 'https://www.uinav.com'$http.beforeRequest = function(options) {uni.showLoading({title:'数据加载中',})
}$http.afterRequest = function() {uni.hideLoading()
}

支持请求拦截器 和响应拦截器

2 配置小程序的分包

除了tabbar页面在主包 其他的都放分包里面 创建一个subpkg文件夹 然后在page.json里面 与pages同级创建

"subPackages": [{"root": "subpkg","pages": [],

在subpkg里面创建分页面 就会自动填充到subPackages里面 创建的时候 记得指定是subpkg

3二次封装 uni.showToast方法

为了方便弹出信息
在main.js定义如下

uni.$showMsg = function(title='数据加载失败', duration = 1500) {uni.showToast({title,duration,icon: 'none'})
}

这样就可以直接用uni.$showMsg来弹出信息了

4 uni.getSystemInfo 拿到可用的高度 windowHeight

5 滑动的时候 切换分类 重置滚动条位置

绑定scroll-top属性 定义初始值为0 当切换的时候 重新赋值

this.scrollTop = this.scrollTop  == 0? 1 : 0
因为这里 都是0 所以滚动条不生效 所以改成1  视觉上不变

6 搜索组件的吸顶效果

定义样式
position:sticky;
top:0;
z-index:999

7 uni-search 自动获取焦点

去源码里面 修改 show showsync 为true就行了

8 搜索框的防抖处理

input(e) {clearTimeout(this.timer)this.timer = setTimeout( () => {console.log(e)
}, 500)
}

500毫秒内只要不输入就会请求 如果重新输入了 就清除计时器重新⏲

9 解决搜索历史2Bug

1 push 添加在数组后面 使用计算属性 然后reverse 变成最前面
2 重复 使用set数组去重
这里为了去掉以前重复的数据 需要这样来处理

const set = new Set(this.historyList)
set.delete(this.kw) #新数据
set.add(this.kw)
this.historyList = Array.from(set)

10 持久化存储历史搜索

uni.setStorageSync(‘kw’, JSON.stringfity(this.histiryList)) 这里转化为字符串 不能存数组
然后onload的时候 再 JSON.parse 拿到

11 下拉加载更多

在pages.json 里面页面里面定义一个style 里面有onReachBottomDistance 设置触底的距离 一般是150 然后在methods里面定义onReachBottom方法 触底会自动触发

  1. 节流阀防止数据发起额外的请求

定义一个变量 请求前为true 请求完为false 这样就不会频繁请求了 后面如果这个变量是true 才会继续触发下一次请求

  1. 根据total 判断数据是否请求完

this.queryObj.pageNum * this.queryObj.pageSize >= this.total
return uni.showMsg(‘数据加载完毕’)

12 下拉刷新

1 style 里面enablePullDownRefresh 设置为true 也可以设置 backbroundColor颜色
2 methods 中定义onPullDownRefresh 方法 会监听下拉刷新
重置数据 重新发起数据请求 同时 请求结束 应该关闭这个下拉刷新的界面

this.getGoodsList(() => uni.stopPullDownRefresh())getGoodsList(cb) {
....请求结束后
cb  && cb() 如果有回调函数就调用
}

13 大图预览效果

在image上绑定方法 然后使用如下的内置方法就行了 current表示当前预览的图片 urls是所有预览的图片地址

uni.previewImage({current: i,urls: this.goods_info.pics.map(item => item.big_pic)
})

14 rich-text 富文本渲染html

rich-text node 绑定就行 图片上下有空白 使用display:block解决 如果是html 可以用正则来替换

info = info.replace(/<img /g/, '/img style="display:block"')

.webp 格式的图片不显示 也可以使用这个方法替换成jpg

价格闪烁的问题 是因为数据请求回来之前是undefined 所以加个if判断就行了 请求出来数据再渲染价格

15 goodsNav 商品导航区域

uni-app 自带的 通过配置options 和 buttonGrop


http://www.ppmy.cn/news/441131.html

相关文章

【QQ界面展示-通知的发布和监听 Objective-C语言】

一、来,看看,我们先给大家介绍一下通知 1.那么,这个通知,我们就是要给大家介绍三个东西 1)一个是通知的发布:如何发布通知 2)一个是通知的监听:发布以后,如何监听通知 3)一个是通知的移除:注意,通知一定要怎么样,最后,移除, 2.当你监听了一个通知以后,当你…

jQuery图片点击放大,弹窗查看

jQuery图片点击弹窗查看 效果 jQuery图片点击弹窗预览 代码 <div class"imglistwrap"><h3 class"imglisttl">《千与千寻》</h3><ul class"imglist"><li><div class"imgbox"><img src"i…

HTML核心(7)- 图片元素

本系列笔记是基于【渡一教育】袁进老师的htmlcss基础课程而记录&#xff0c;仅作为个人记录以及阅读使用。 文章目录 图片元素img元素和a元素联用和map元素联用和figure元素联用 参考资料 图片元素 img元素 image&#xff0c;空元素 src属性&#xff1a;source alt属性&am…

更换VSCode的背景图片

上班摸鱼时想给编辑器换个自己的图片(只换主题有点点单调~) 步骤1&#xff1a;vscode安装background插件 步骤2&#xff1a;进入settings.json文件 在设置中搜索“background”&#xff0c;进入settings.json文件中编辑 步骤3&#xff1a;配置settings.json文件 步骤4&#…

HTML学生个人网站作业设计:电影网站设计——千与千寻(9页) HTML+CSS+JavaScript 简单DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载

一、作品介绍 1.作品简介 &#xff1a;html期末大作业,dw学生网页设计作业, A水平 ,喜欢的可以下载&#xff0c;文章页支持手机PC响应式布局。 2.作品编辑&#xff1a;作品下载后可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、…

python opencv创建图像_使用Python中OpenCV库创建一幅图片的RGB通道图片

我们知道&#xff0c;在使用PhotoShop进行图片的抠取、创建和存储选区、存储图像的色彩资料等复杂操作时&#xff0c;经常会用到一个功能&#xff0c;那就是“RGB”通道&#xff0c;它能从三原色角度对一幅图片进行精准处理。我们在惊叹PhotoShop中RGB通道功能强大的同时&#…

HTML常用标签

一 标签语义 简单的理解&#xff1a;标签的含义&#xff0c;即&#xff1a;这个标签是用来干嘛的。 二 标题标签 为了使网页更具有语义化&#xff0c;我们经常会在页面中用到标题标签。 HTML 提供了 6 个等级的网页标题&#xff0c;即&#xff1a;<h1> 到 <h6>…

除了《千与千寻》,宫崎骏漫画的花卉治愈了观众,而花艺学院治愈了你一片温情

《千与千寻》被称为动画大师宫崎骏的巅峰之作&#xff0c;为向经典致敬&#xff0c;国语版电影《千与千寻》在华已上映6天&#xff0c;可能因为前有玉珠&#xff0c;很多观众都有吐槽配音是这部电影的败笔&#xff0c;但是尽管如此&#xff0c;目前累计票房已经突破近3亿元人民…