119.【Uniapp】(八)

简介: 119.【Uniapp】

4.配置页面 - 搜索

(1).创建search分支

运行如下的命令,基于master分支在本地创建search子分子,用来开发搜索相关的功能。

git checkout -b search

(2).自定义搜索组件
  1. 自定义my-search组件

1. 在项目根目录的 components 目录上,鼠标右键,选择 新建组件,填写组件信息后,最后点击 创建 按钮

2.在分类页面的 UI 结构中,直接以标签的形式使用 my-search 自定义组件:

cate.vue

<my-search></my-search>

注意事项:

  1. Vue: 在Vue中使用组件,我们需要先创建一个组件component。然后在使用这个组件的地方 import引入的操作,然后进行components{}进行注册,然后我们再< xxx>
  2. Uniapp: 创建components/xxx,直接自动就默认进行了全局的注册,最后我们使用 < xxxx>

3.定义 my-search 组件的 UI 结构如下:

<template>
  <view>
    <!-- 搜索框 -->
    <view class="my-search-container">
      <view class="my-search-box">
        <!-- uniapp提供的图标 type指的是类型、size指的是大小-->
        <uni-icons type="search" size="17"></uni-icons>
        <text class="pleacholder">搜索</text>
      </view>
    </view>
  </view>
</template>
<style lang="scss">
  // 搜索框整个view
  .my-search-container {
    // 搜索框的高度是 50px
    height: 50px;
    background-color: #C00000;
    // 将搜索框进行居中对其盒子
    display: flex;
    align-items: center;
    padding: 0 20rpx;
    // 搜索框里面
    .my-search-box {
      height: 36px;
      background-color: #FFFFFF;
      // 圆角
      border-radius: 18px;
      width: 100%;
      // 文本横向布局、左右居中、垂直居中、
      display: flex;
      justify-content: center;
      align-items: center;
      .pleacholder {
        font-size: 15px;
        margin-left: 5px;
      }
    }
  }
</style>

修改可用屏幕高度解决小bug

this.wh = systemInfo.windowHeight - 50

  1. 通过自定义属性增强组件的通用性

为了增强组件的通用性,我们允许使用者自定义搜索组件的 背景颜色 和 圆角尺寸。

1.通过props定义bgclore和rasuis两个属性,并指定值类型和属性默认值

<template>
  <view>
    <!-- 搜索框 -->
    <view class="my-search-container" :style="{'background-color' : bgcolor}">
      <view class="my-search-box" :style="{'border-radius' : radius + 'px'}">
        <!-- uniapp提供的图标 type指的是类型、size指的是大小-->
        <uni-icons type="search" size="17"></uni-icons>
        <text class="pleacholder">搜索</text>
      </view>
    </view>
  </view>
</template>
<script>
  export default {
    name: "my-search",
    props: {
      // 背景颜色
      bgcolor: {
        type: String,
        default: '#C00000'
      },
      //圆角尺寸
      radius: {
        type: Number,
        default: 18 // 单位是px
      }
    },
    data() {
      return {
      };
    }
  }
</script>

重写背景颜色:

  1. 为自定义组件封装 click 事件 (子传父)

1.在 my-search 自定义组件内部,给类名为 .my-search-box 的 view 绑定 click 事件处理函数:

cate.vue 父组件

<!-- 添加上自定义搜索的组件 -->
    <my-search :bgcolor="'pink'" @Myclick="gotoSearch()"></my-search>
js
      // 点击搜索页
      gotoSearch() {
        console.log('xxxx')
      }

my-search.vue 子组件

<template>
  <view>
    <!-- 搜索框 -->
    <view class="my-search-container" :style="{'background-color' : bgcolor}" @click="searchBoxHandler()">
      <view class="my-search-box" :style="{'border-radius' : radius + 'px'}">
        <!-- uniapp提供的图标 type指的是类型、size指的是大小-->
        <uni-icons type="search" size="17"></uni-icons>
        <text class="pleacholder">搜索</text>
      </view>
    </view>
  </view>
</template>
    methods: {
      searchBoxHandler() {
        console.log('ssss')
        // 利用绑定事件
        this.$emit('Myclick')
      }
    }



相关文章
|
JavaScript 小程序 API
119.【Uniapp】(三)
119.【Uniapp】
106 0
|
小程序 开发工具 git
119.【Uniapp】(二)
119.【Uniapp】
166 0
|
开发框架 小程序 JavaScript
|
小程序
|
5月前
|
移动开发 JavaScript 前端开发
【Uniapp 专栏】Uniapp 与 Flutter 的功能特点对比
【5月更文挑战第15天】Uniapp 和 Flutter 是跨平台开发的热门框架。Uniapp 以其强大的跨平台兼容性和基于 Vue.js 的易学性著称,适合快速开发适用于 iOS、Android 和 H5 的应用。其丰富的组件生态简化了功能集成。然而,在复杂场景下,性能可能不及原生。Flutter 则以其全新渲染引擎实现流畅界面和高度自定义,性能接近原生,但学习成本较高,需处理特定平台适配。适用于高要求的项目。两者各有优势,选择应考虑项目需求、技术储备和开发周期。
760 1
【Uniapp 专栏】Uniapp 与 Flutter 的功能特点对比
|
5月前
uniapp配置tarBar
uniapp配置tarBar
82 0

相关实验场景

更多