小程序封装公共搜索框

news/2024/7/20 3:32:18 标签: 小程序, javascript, 前端

小程序封装公共搜索框

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

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 文件中,我们可以定义搜索框的逻辑,例如:

javascript">// 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 文件中,我们可以处理搜索框的输入和搜索事件,例如:

javascript">// 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://www.niftyadmin.cn/n/242664.html

相关文章

垃圾收集算法面试总结

垃圾收集算法 标记 - 清除算法 首先标记出所有需要被回收的对象&#xff0c;标记完后统一回收所有被标记的对象。 后续的收集算法都是基于这种思路并对其不足进行改进而得到的。 这种方法主要有两个缺点&#xff1a; 一个是效率问题&#xff0c;标记和清除两个过程的效率都…

CAS实现原⼦操作的三⼤问题,该如何解决?

目录 1、ABA问题 2.循环时间长开销大 3、只能保证一个共享变量的原子操作 总结&#xff1a; CAS&#xff08;Compare-and-Swap&#xff09;是一种用于实现原子操作的技术&#xff0c;但是它存在着三个主要的问题&#xff1a;ABA问题、循环时间长开销大、只能保证一个共享变…

ITSS服务经理 、服务工程师线上开班在即

为了促进企业信息技术服务-运行维护服务能力&#xff0c;全面系统的提升员工的IT服务知识和技能水平&#xff0c;且更好的满足参训企业的时间需求&#xff0c;我司将于5月份开展ITSS服务经理、服务工程师线上班。 日期和形式 五月份&#xff1a;ITSS服务项目经理&#xff1a;…

【Nginx网站服务】

安装Nginx服务 1.先去官网下载软件包 2.关闭防火墙&#xff0c;将安装nginx所需软件包传到/opt目录下 systemctl stop firewalld systemctl disable firewalld setenforce 0nginx-1.18.0.tar.gz nginx-1.22.0.tar.gz3.安装依赖包 #nginx的配置及运行需要pcre、zlib等软件…

Failed to resolve: com.github.adrielcafe:ffmpeg-android-java:2a627f6ecd

背景 项目中有引用 AndroidAudioConverter&#xff0c;引入方式&#xff1a; implementation com.github.adrielcafe:AndroidAudioConverter:0.0.8 gradle同步及编译代码都会报错&#xff1a; Failed to resolve: com.github.adrielcafe:ffmpeg-android-java:2a627f6ecd 原…

C# 中的委托和事件机制

在C#中&#xff0c;委托和事件是非常重要的概念&#xff0c;用于实现程序中的回调和事件处理。在这里&#xff0c;我们将介绍C#中委托和事件机制的基础知识和用法。 委托是一种类似于C/C函数指针的概念&#xff0c;它允许将方法作为参数传递到其他方法中&#xff0c;以实现回调…

Spring Security 6.0系列【24】认证篇之OAuth 2.0 协议

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.0.4 本系列Spring Security 版本 6.0.2 源码地址:https://gitee.com/pearl-organization/study-spring-security-demo 文章目录 1. 简介1.1 需求背景1.2 OAuth 协议2. 四种角色2.1 资源所有者2.2 资源服务…

GrassRouter多链路聚合通信系统保障公路网络稳定全面覆盖解决方案

近年来国内经济不断发展&#xff0c;城市道路交通能力迅速提高&#xff0c;各省市道路交通体系不断完善&#xff0c;促使高速公路运能得到极大提高&#xff0c;公路运输的通达性、舒适性得到明显提高。随着现代化高速公路的建设&#xff0c;新一代无线网络监控系统&#xff0c;…