一.分类

1.1 页面布局

首先创建cate的分支

定义基本结构,因为是两个需要滚动的区域,所以这里要用到组件 scroll

这个组件如果是y scroll那就要固定高度,x scroll那就要固定宽度

这里有个问题就是,我们应该把高度限定在整个屏幕高度

这里用到uniapp一个api uni.getSystemInfoSync()他可以获得很多信息,比如该手机型号、以及平台、还有整个屏幕宽高以及内容区域宽高等

1.2 一级分类

先获取数据

然后开始渲染

注意block类似于template不占用空间组件

然后动态active的变化

注意如果是多个class使用数组包起来

然后点击事件

1.3 二三级分类

二三级分类是跟着一级分类一起来的数据,所以可以在一开始就接收第一个active的数据,再通过改变active的点击事件来切换列表

然后就可以渲染到页面

二级分类就出来了

三级分类直接渲染即可

1.4 重置滚动条,跳转分包

现在的页面是有一个bug的

当我们浏览一半到这里再次点击一级分类,会发现还是在这个位置,有点类似于路由的滚动行为

这里的解决思路是 scroll组件有一个属性scroll-top 可以定位到竖向滚动条的位置

但是这样并不会生效,因为我们的scrollTop始终没变过,所以你给他赋值0,他发现他本来就是0就不会有赋值的操作,页面也就响应不到

然后点击三级分类每一项跳转到分包商品详情页去

注意tabBar是用switchTap来跳,分包非tabBar页面使用navigateTo来跳

1.5 分支合并提交

主要就是记住分支暂存提交推送后,到主分支要先暂存提交,再合并,再来推送

二.搜索

先创建search分支

2.1 自定义搜索组件

uni创建自定义组件

在 uni-modules新建插件

而且不用注册,直接在页面使用即可

该效果本质上是在这里展示用的,当一点击回调往真正的搜索页面

这里如果要把我们的背景颜色和边框圆角弄成动态的,其实就是vue的props

回忆一下对象写法

用在组件上,注意属性名和值都要加引号

注意一下uni提供了一些组件,uniui在官方文档上

接下来回顾一下自定义事件,也就是我们怎么让页面点击这个组件我们跳转到搜索页面

绑定自定义事件

组件通过emit,规定触发的时机以及发送数据

2.1.1 导航跳转与吸顶效果

首先导航跳转

先创建一个分包

然后跳转非tabBar用navigateTO

然后再home页面也需要一个

但是在这个页面就出现了问题,会跟着页面飘起走

之所以cate页面没出现是因为它是用的scroll组件,他有滚动条,超出了就滚动条往下走了,所以search组件就可以一直在那里,但是还需要完善一下

用我们之前cate计算出来的高度减去search组件的高度

然后解决首页这个问题,将它设置为sticky定位即可

2.2 搜索建议

搜索页面的基本结构,这里有用到一个uni的组件有专门的搜索栏search-bar

然后将取消按钮删除,去掉一些不必要的事件

要修改背景颜色要去这个组件内部去修改

然后要让他一进来就获取焦点也是在内部去改,将两个都改为true

该组件的input事件会受到参数e也就是输入的值

很明显这里要做一个防抖处理

2.2.1 根据关键词搜索列表

这里的思路是这样的,在防抖里面调用一个获取搜索列表的函数,在这个函数里面应该先判断一下kw也就是输入的关键词是否是空,如果为空就让列表为空并退出循环否则就正常走,发起请求并给到数组

然后渲染到页面上

同时跳转到商品详情页面

2.3 搜索历史

先定义好ui结构

来点假数据

然后搜索建议列表和搜索历史应该条件渲染

2.3.1 搜索历史列表处理

同样还是input事件

但是有两个问题

一个是最新搜索的应该放在前面:

这里不改变push的用法的前提下,需要用计算节点来做,因为reverse会改变原数组,容易出差错,而且要浅拷贝一下也是怕把原数组改变到了

还有一个问题就是我们搜重复的会显示两个在上面:

这样做虽然可以去重操作,但是有一个问题 就是我们如果已经搜索了一个a,在最后面,在搜索一次a,虽然不会上去重复的,但是这个时候a应该在最前面去这样做的话这个a还是在最后面

其原因是因为原本结构是这样

页面呈现是这样

这个时候你输入a,先push进去,然后set发现重复,就直接删除了新进来的这个a,相当于没有变化,所以也不会引起计算属性reverse的变化,也就导致了你就算搜了一次a他也没有到最前面来

正确的做法应该这样

去掉我们原来的push,当我们input之后先创建一个set结构,用她的delete方法删除原来的,在add添加新的,这样结构也就变了,就算有重复的也会被删去重复的,而且最重要的是,新搜索的会在前面

持久化存储搜索建议列表

大体思路是在我们存储进historyList的时候变成json字符串也保存进storage,用到uni的一个api uni.setStorageSync

然后在onload生命钩子中去获取,注意要考虑没有的情况,就为一个空的字符串数组

2.3.2 清空搜索历史记录

绑定事件

需要将列表清空,同时记得移除storage里面的数据

2.3.3 点击搜索历史跳转

02 uniapp/微信小程序 项目day02的更多相关文章

  1. 01 uniapp/微信小程序 项目day01

    一.起步 1.1 配置uni-app开发环境 什么是uni-app,就是基于vue的一个开发框架,可以将我们写的一套代码,同时发布到ios.安卓.小程序等多个平台 官方推荐使用Hbuilderx来写u ...

  2. uniapp/微信小程序 项目day03

    一.商品列表 1.1 获取数据 首先能够进入商品列表的途径 传的数据有 了解了这个之后就可以开始了,先创建分支 创建编译模式,并分配初试数据 这个时候就可以获取数据了 需要的数据 所以在发起请求之前需 ...

  3. 05 uniapp/微信小程序 项目day05

    ​ 一.登录与支付 1.1 登录 1.1.1 条件判断 当我们点击结算应当进行条件判断 第一个如果没有勾选商品 第二个是没选择地址 第三个是未登录 1.1.2 页面布局 应该有两个页面,一个点击登录, ...

  4. 04 uniapp/微信小程序 项目day04

    一.加入购物车 1.1 购物车数量 先创建购物车git 这里的数据肯定要做全局数据,因为不能只在details这个页面去操作他,他到底有几个也是由购物车页面获取到的 所以需要vuex 创建store文 ...

  5. 使用uni-app(Vue.js)创建运行微信小程序项目步骤

    使用uni-app(Vue.js)开发微信小程序项目步骤 1. 新建一个uni-app项目   创建完成后的目录结构 2. 打开微信小程序开发工具端的端口调试功能 3. 运行创建的项目 效果

  6. 微信小程序项目转换为uni-app项目

    一.它是谁? [miniprogram-to-uniapp]转换微信小程序"项目为uni-app项目.原则上混淆过的项目,也可以进转换,因为关键字丢失,不一定会完美. 二.它的原理是什么? ...

  7. 02、微信小程序的数据绑定

    02.微信小程序的数据绑定 目录结构: 模板内容: 使用bindtap绑定事件 <!--index.wxml--> <view class="container" ...

  8. 【重点突破】—— UniApp 微信小程序开发官网学习One

    一.初步认识 uni-app官网:https://uniapp.dcloud.io/component/README HBuilderX官方IDE下载地址: http://www.dcloud.io/ ...

  9. 微信小程序开发01 --- 微信小程序项目结构介绍

    一.微信小程序简单介绍: 微信官方介绍微信小程序是一个不需要下载安装就可使用(呵呵,JS代码不用下载吗?展示的UI不用下载吗?)的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用. ...

随机推荐

  1. NC50528 滑动窗口

    NC50528 滑动窗口 题目 题目描述 给一个长度为N的数组,一个长为K的滑动窗体从最左端移至最右端,你只能看到窗口中的K个数,每次窗体向右移动一位,如下图: 你的任务是找出窗体在各个位置时的最大值 ...

  2. wsl2安装百度apollo及其基本配置

    一. wsl2的开启 首先 WSL2 gui 需要Windows 11 Build 22000版本以上才支持 利用管理员权限打开PowerShell 执行 dism.exe /online /enab ...

  3. 北京市行政村边界shp数据/北京市乡镇边界/北京市土地利用分类数据/北京市气象数据/降雨量分布数据/太阳辐射数据

     数据下载链接:数据下载链接​ 北京是一座有着三千多年历史的古都,在不同的朝代有着不同的称谓,大致算起来有二十多个别称.北京地势西北高.东南低.西部.北部和东北部三面环山,东南部是一片缓缓向渤海倾斜的 ...

  4. Object类中wait带参方法和notifyAll方法和线程间通信

    notifyAll方法: 进入到Timed_Waiting(计时等待)状态有两种方式: 1.sleep(long m)方法,在毫秒值结束之后,线程睡醒,进入到Runnable或BLocked状态 2. ...

  5. .NET GC工作流程

    前言 在上文[如何获取GC的STW时间]一文中,我们聊到了如何通过监听GC发出的诊断事件来计算STW时间.里面只简单的介绍了几种GC事件和它的流程. 群里就有小伙伴在问,那么GC事件是什么时候产生的? ...

  6. RocketMQ之消费者启动与消费流程

    vivo 互联网服务器团队 - Li Kui 一.简介 1.1 RocketMQ 简介 RocketMQ是由阿里巴巴开源的分布式消息中间件,支持顺序消息.定时消息.自定义过滤器.负载均衡.pull/p ...

  7. day03 Java_运算符_分支结构

    列表: 运算符的练习:算术.关系.逻辑.赋值.字符串连接.条件 分支结构的练习:if结构 分支结构的练习:if...else结构 参考 运算符的练习:算术 输出几个整数取模,验证结果 声明两个整型变量 ...

  8. ROS机械臂 Movelt 学习笔记2 | Move Group 接口 C++

    Movelt为使用者提供了一个最通用且简单的接口 MoveGroupInterface 类,这个接口提供了很多控制机器人的常用基本操作,如: 设置机械臂的位姿 进行运动规划 移动机器人本体 将物品添加 ...

  9. 第k小 来源:牛客网

    题目 链接:https://ac.nowcoder.com/acm/contest/28886/1003 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K, ...

  10. System类的常用方法

    java.lang...System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作,在System类的API文档中,常用的方法有: public static long current ...