小程序封装公共搜索框

news/2024/7/8 1:24:54

小程序封装公共搜索框

在小程序开发中,全局搜索是一个常见的需求,例如在一个商城小程序中,用户可以通过搜索框快速搜索商品。为了提高代码复用性和可维护性,我们可以将搜索框封装成一个组件,同时通过从父组件传递参数的方式,实现搜索框样式的定制化。本篇博客简单介绍了如何封装一个全局搜索框组件,并实现可自定义的样式效果。

1. 创建搜索框组件

首先,我们可以在小程序的 components 文件夹下创建一个新的组件文件夹,例如 search-box,并在该文件夹下创建以下文件:

  • search-box.wxml:搜索框的模板文件
  • search-box.wxss:搜索框的样式文件
  • search-box.js:搜索框的逻辑文件
  • search-box.json:搜索框的配置文件

search-box.wxml 文件中,我们可以定义搜索框的模板结构,例如:

<!-- search-box.wxml -->
<view class="search-box">
  <input class="search-input" bindinput="onInput" placeholder="{{placeholder}}" />
  <button class="search-btn" bindtap="onSearch">搜索</button>
</view>

search-box.wxss 文件中,我们可以定义搜索框的样式,例如:

/* search-box.wxss */
.search-box {
  display: flex;
  align-items: center;
  background-color: #f5f5f5;
  border-radius: 20rpx;
  box-shadow: 0 4rpx 10rpx rgba(0, 0, 0, 0.1);
}

.search-input {
  flex: 1;
  font-size: 28rpx;
  padding: 20rpx;
  border: none;
  outline: none;
}

.search-btn {
  font-size: 28rpx;
  color: #fff;
  background-color: #007aff;
  border: none;
  border-radius: 20rpx;
  padding: 10rpx 20rpx;
  margin-left: 10rpx;
  box-shadow: 0 2rpx 5rpx rgba(0, 0, 0, 0.1);
}

search-box.js 文件中,我们可以定义搜索框的逻辑,例如:

// search-box.js
Component({
  properties: {
    placeholder: {
      type: String,
      value: '请输入搜索关键词',
    },
  },

  methods: {
    onInput(event) {
      // 处理输入框输入事件
      const value = event.detail.value;
      this.triggerEvent('input', { value });
    },

    onSearch() {
      // 处理搜索按钮点击事件
      this.triggerEvent('search');
    },
  },
});

search-box.json 文件中,我们可以定义搜索框的配置,例如:

// search-box.json
{
  "component": true,
  "usingComponents": {}
}

2. 在父组件中使用搜索框组件

在需要使用搜索框的父组件中,我们可以引入刚刚创建的搜索框组件,并通过传递参数的方式,实现搜索框样式的定制化。例如,我们可以在父组件的 wxml 文件中引入搜索框组件,并传递 placeholderclass 参数:

<!-- parent.wxml -->
<view class="parent">
  <search-box class="custom-search-box" placeholder="请输入商品名称"></search-box>
</view>

在父组件的 wxss 文件中,我们可以定义搜索框样式,例如:

/* parent.wxss */
.custom-search-box {
  background-color: #fff;
  border: 2rpx solid #ccc;
  border-radius: 40rpx;
}

在父组件的 js 文件中,我们可以处理搜索框的输入和搜索事件,例如:

// parent.js
Page({
  onSearchInput(event) {
    const value = event.detail.value;
    // 处理搜索框输入事件
  },

  onSearch() {
    // 处理搜索事件
  },
});

最后,在父组件的 wxml 文件中,我们可以通过 bind 属性将搜索框的事件绑定到父组件的函数中:

<!-- parent.wxml -->
<view class="parent">
  <search-box class="custom-search-box" placeholder="请输入商品名称" bind:input="onSearchInput" bind:search="onSearch"></search-box>
</view>

这样,我们就可以在父组件中使用搜索框组件,并通过传递参数的方式,实现搜索框样式的定制化。

3. 总结

通过封装全局搜索框组件,并通过从父组件传递参数的方式,实现搜索框样式的定制化,可以大大提高代码复用性和可维护性。同时,小程序的组件化开发模式,也可以为我们提供更加灵活和高效的开发方式。在实际开发中,我们可以根据具体需求,进一步优化搜索框组件的功能和样式,以实现更好的用户体验和开发效率。


http://lihuaxi.xjx100.cn/news/1048003.html

相关文章

强训之【求最大连续的bit数和最近公共祖先】

目录 1.求最大连续的bit数1.1题目1.2思路1.2.1暴力求解1.2.2 字符串分割求解1.2.3 位运算“与”求解 1.3代码1.3.1暴力求解代码1.3.2字符串分割求解代码1.3.3位运算“与”求解 2.最近公共祖先2.1题目2.2思路2.3代码 3.选择题 1.求最大连续的bit数 1.1题目 链接: link 描述 求…

电脑端(PC)按键精灵——5.找色/找图命令

电脑端(PC)按键精灵——5.找色/找图命令 注&#xff1a;说了键盘、鼠标、其他、控制命令还有安装内容&#xff0c;现在说下颜色/图形命令&#xff0c;这一节相当重要 按键精灵小白入门详细教程&#xff1a; 电脑端(PC)按键精灵—小白入门 详细教程 命令介绍 1.GetPixelCol…

C. Vus the Cossack and Strings(异或判断二进制位匹配数奇偶)

Problem - C - Codeforces 题目描述 Vus the Cossack has two binary strings, that is, strings that consist only of "0" and "1". We call these strings aa and bb . It is known that |b| \leq |a|∣b∣≤∣a∣ , that is, the length of bb is at m…

增广拍卖——二跳页下的拍卖机制探索

1. 引言 本文提出的方案已被WSDM 2023接收&#xff0c;论文&#xff1a;Boosting Advertising Space: Designing Ad Auctions for Augment Advertising&#xff0c; 下载&#xff1a;https://dl.acm.org/doi/abs/10.1145/3539597.3570381 信息流产品为了保障用户体验通常会严格…

基于stm32f103c8t6的智能小车蓝牙模块

一、蓝牙模块简介 1.1、HC05 1.1.1、HC05AT指令 AT 识别是否进入AT模式 AT+NAME / AT+NAME=< param > 询问名字 / 设置名字 AT+RNAME?< param1> 获取远程蓝牙设备名称: AT+PSWD / AT+PSWD=< param > 询问密码 / 设置密码 AT+UART /A…

“升级大师:不同级别程序员的成长之路和突破痛点难点实战案例“

在编程世界中&#xff0c;程序员的技能和经验各不相同。根据他们的经验水平&#xff0c;我们可以将他们分为&#xff1a;小白、初级、中级、高级和资深程序员。在本文中&#xff0c;我们将讨论这些不同级别的程序员如何处理问题&#xff0c;以及他们在解决问题过程中可能遇到的…

浏览器强缓存与协商缓存

一、强缓存 强制缓存的思想是&#xff0c;在浏览器内置数据库中缓存每次请求中 “可以被缓存” &#xff08;受到一些关键字的管控&#xff09;的静态资源如 image, css, js 文件&#xff0c; 当第二次请求被缓存过的资源时候&#xff0c;会通过校验两个字段 Expires 和 Cache-…

怎么使用AS推送项目到Github上,一文解决!

废话不多说&#xff0c;直接发车了&#xff01;在android studio上推送项目到GitHub上有个基本可以解决所有推送失败问题的步骤&#xff0c;如下图&#xff1a; 路径&#xff1a;File —— Setting —— Version Control —— GitHub —— 加号&#xff0c;添加用户 上述步骤是…