原生微信小程序,搜索框(search)组件

el/2024/5/8 9:16:37

原生微信小程序,搜索框(search)组件

在这里插入图片描述
首先创建组件及两个跳转页面,第一个是搜索框所在的页面(首页),第二个是搜索详细页
搜索框的本质是:搜索框不是input,而是navigate,跳转到专门的搜索页,搜索结果会呈现在这一页
先创建三个文件
在这里插入图片描述

标题selectPage页面的编写

在 selectPage.wxml 文件里引入搜索框组件
引入组件之前记得在 selectPage.json 文件中配置 组件

{"usingComponents": {"search": "../../components/select"}
}
<!-- 父组件向子组件传递参数,使用属性的形式,子组件通过 properties进行参数接收 -->
<search urlPath="{{urlPath}}" url="../selectResult/selectResult"></search>

最后在 JS 文件中 设置url路径,因为我们的目的是制作组件,所以参数这块都由父组件传递过去
到这里,selectPage 的任务基本完成了

Page({data: {urlPath: "../selectResult/selectResult"},onLoad: function (options) {}
})

组件的编写

搜索组件的基本 结构层 写一下

<view class="search_wrap"><navigator url="{{urlPath}}">搜索</navigator>
</view>

css样式也随便改一改,自己看的舒服就行,这里用的是less语言

/* components/select.wxss */
.search_wrap {width: 100%;height: 80rpx;background-color: #eb4450;display: flex;justify-content: center;align-items: center;navigator {text-align: center;padding: 10rpx;width: 90%;background-color: #fff;color: #6b6b6b;border-radius: 20rpx;}
}

JS文件中接收一下来自父元素传递过来的URL路径参数

// components/select.js
Component({properties: {urlPath: {type: String}},data: {},methods: {}
})

selectResult 页面的编写

结构层

<view class="search_row"><input value="{{inputValue}}" bindinput="handleInput" class="inp" placeholder="请输入"></input><button class="btn" bind:tap="handleCanle">取消</button>
</view>
<view class="search_content"><view class="search_item" wx:for="{{searchResult}}">{{item.goods_name}}</view>
</view>

表示层

page {background-color: #ebebeb;padding: 20rpx;
}.search_row {height: 60rpx;display: flex;.inp {background-color: #fff;height: 100%;padding-left: 20rpx;flex: 4;border-radius: 5rpx;}.btn {width: 110rpx;height: 100%;font-size: 26rpx;font-weight: normal;padding: 0;margin: 0 0 0 10rpx;display: flex;justify-content: center;align-items: center;}
}.search_content {margin-top: 30rpx;.search_item {overflow: hidden;white-space: nowrap;text-overflow: ellipsis;background-color: #fff;border-bottom: 1px solid #7e7e7e;height: 60rpx;padding: 10rpx;font-size: 26rpx;}
}

行为层

// pages/selectResult/selectResult.js
Page({data: {// 定义搜索结果变量,初始化为空数组searchResult: [],// 定义inputValue,输入框的input值,初始化为空inputValue: ""},handleInput: function (e) {// 获取输入框的值const { value } = e.detail// 合法性验证,去除前后空格,防止打很多空格也会发送请求// 去除空格后的值是合法值了,再取反,为不合法值,不合法搜索结果清空if (!value.trim()) {this.setData({searchResult: [],})// 值不合法,直接return掉,不用执行下面的了return;}/*** 防抖动功能* 1 如果第一次输入的值合法,会执行this.TimeId这个定时器,然后一秒钟之后发送请求* 2 如果在这1秒钟的延迟内,用户重新做了输入,重新触发handleInput方法时,会执行clearTimeout*   将上一个定时器请求杀掉,然后再执行新的定时器函数,直到用户1庙后都没有新的输入后,才会发送请求*/clearTimeout(this.TimeId)this.TimeId = setTimeout(() => {this.qSearch(value)}, 1000)},// qSearch 发送请求函数(参数为输入框中的值)qSearch: function (query) {// 定义一个加载中的提示wx.showLoading({title: '加载中...',})// 发送请求wx.request,微信封装好的ajax请求// 参数有两个需要传递的// url,接口地址// data,搜索的关键词,这边接口会自动处理并返回带有关键词的内容,// 不是因为wx.request又会发送ajax,还会给你自动筛选wx.request({url: 'https://api-hmugo-web.itheima.net/api/public/v1/goods/qsearch',data: { query },// 请求成功时调用success: (result) => {// 将获取的值,赋值给定义的searchResult,WXML文件获取渲染this.setData({searchResult: result.data.message})// 成功获取数据后,把加载中的提示关掉wx.hideLoading({complete: (res) => { },})}});},// 取消按钮函数handleCanle: function () {this.setData({searchResult: [],inputValue: ""})}
})

gitee代码地址:https://gitee.com/chenminghuisir/wechat-applet-component.git
代码保存在仓库,WXDoubleScroller文件里


http://www.ngui.cc/el/3328421.html

相关文章

原生微信小程序实现 “上拉刷新” 和 “下拉加载” 的原理

原生微信小程序实现 “上拉刷新” 和 “下拉加载” 的原理 上滑加载更多 在使用上滑加载更多时&#xff0c;有一个小坑需要注意下&#xff0c;如果是自定义的scroll-view&#xff0c;滑到底是没法触发onReachBottom函数的 需要在scroll-view组件上定义lower-threshold"50…
阅读更多...

原生微信小程序,实现 下拉菜单 ,带遮罩层,出现隐藏动画(dropDownMenu思路总结)

原生微信小程序&#xff0c;实现 下拉菜单 &#xff0c;带遮罩层&#xff0c;出现隐藏动画&#xff08;dropDownMenu思路总结&#xff09; 实现效果 先上代码&#xff0c;下面开始做总结 .wxml 代码 <!-- 导航栏循环 --> <view class"wrap"><viewda…
阅读更多...

原生微信小程序 动态(横向,纵向)公告(广告)栏

原生微信小程序 动态&#xff08;横向&#xff0c;纵向&#xff09;公告&#xff08;广告&#xff09;栏 先看一下动态效果 Y轴滚动公告的原理是swiper组件在页面中的Y轴滚动&#xff0c;属性vertical&#xff0c;其余属性也设置一下autoplay circular interval"3000&quo…
阅读更多...

原生微信小程序,navigate(导航栏)tab栏,tab栏与swiper结合,含过渡动画,初级

原生微信小程序&#xff0c;navigate&#xff08;导航栏&#xff09;tab栏&#xff0c;tab栏与swiper结合&#xff0c;含过渡动画&#xff0c;初级 看一下演示效果 之前也做过一个类似的&#xff0c;tab(navigator) 栏&#xff0c;但是 tab 标签下面的小横线没有过渡效果&…
阅读更多...

原生微信小程序,楼层跳转,scroll-into-view,实例+遇到的坑

原生微信小程序&#xff0c;楼层跳转&#xff0c;scroll-into-view&#xff0c;实例遇到的坑 先看一下演示效果 需要注意的几个踩坑点 1 . scroll-view 必须设置 scroll-y"true" 或者 scroll-x"true"看你想往哪个方向滚动 2 . scroll-into-view" {{…
阅读更多...

GIT的使用及常用命令,代码的上传,下载

GIT的下载 打开 Git官网&#xff0c;下载 Git 对应操作系统的版本。 因为没有vpn&#xff08;科学上网&#xff09;&#xff0c;所有东西下载的都很慢得话就可以去找镜像&#xff01; 官网&#xff08;肯定&#xff09;下载太慢&#xff0c;我们可以使用 淘宝镜像下载&…
阅读更多...

webpack 搭建 React 项目

使用 webpack 打包 React 项目 根据官方文档上面说 你的机器上安装的 Node > 8.10 和 npm > 5.6 1 . 所以第一步检查自己的 node 版本 2 . 根据官方文档上说的&#xff0c;直接运行下面三句话&#xff0c;创建 react 项目并运行 npx create-react-app my-app cd my-a…
阅读更多...

如何使用 sessionStorage 和 localStorage 进行简单的数据存储与获取

如何使用 sessionStorage 和 localStorage 进行简单的数据存储与获取 localStorage和sessionStorage是Web提供的两种本地存储方式。 相比较cookie而言&#xff0c;localStorage和sessionStorage的存储大小很大&#xff0c;localStorage能够长期保存&#xff0c;sessionStorage…
阅读更多...

vue中 slot 的使用总结

vue中slot的使用总结 slot是Vue中的插槽&#xff0c;首先它是使用在 子组件 中的 Vue的slot插槽&#xff0c;简单理解就是&#xff0c;在子组件内占坑&#xff0c;在父组件里填坑。 slot一般都是子组件定义了主体部分&#xff0c;父组件引入&#xff0c;然后父组件根据需求不…
阅读更多...

git操作,删除远端分支,在某一分支上切出一个新的分支,合并代码

&#xff08;一&#xff09;删除远端分支 1 . 首先 使用 git branch -a 查看项目中所有的分支 2 . 切换到master分支上 git checkout master 3 . 使用 git push origin --delete 分支名的形式删除远端分支 &#xff08;一&#xff09;删除本地分支 git branch -d BranchName&…
阅读更多...
最新文章

代做工资流水公司佛山制作工资流水账单揭阳银行流水账多少钱南京自存银行流水代办西宁办理房贷银行流水宜昌银行流水账查询济宁工资银行流水费用江门银行对公流水哈尔滨工资代付流水代做厦门打入职流水台州企业对公流水多少钱湘潭查离职证明上饶做对公银行流水重庆房贷流水开具贵阳消费贷流水样本保定企业贷流水曲靖企业银行流水代做孝感购房银行流水模板宁德办银行流水修改邢台个人流水打印上海薪资流水曲靖流水威海贷款工资流水 制作邯郸银行流水单代开成都查询对公流水深圳代开背调工资流水湘潭个人银行流水查询南京查公司流水德阳办贷款银行流水黄冈对公账户流水办理肇庆制作工资银行流水香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

代做工资流水公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化