uni-app 仿58同城app搜索组件需求

发布于 1周前 作者 vueper 来自 Uni-App

uni-app 仿58同城app搜索组件需求

Image

Image

Image


1 回复

针对uni-app仿58同城app搜索组件的需求,我们可以利用uni-app框架提供的丰富组件和API来实现一个功能齐全的搜索组件。以下是一个简单的代码示例,展示了如何实现一个基本的搜索组件,包括搜索输入框、搜索按钮以及搜索结果展示。

首先,在pages/index/index.vue文件中,我们可以定义搜索组件的结构:

<template>
  <view class="container">
    <view class="search-bar">
      <input
        type="text"
        placeholder="请输入搜索关键词"
        v-model="searchKeyword"
        @clear="handleClear"
        @input="handleInput"
      />
      <button @click="handleSearch">搜索</button>
    </view>
    <view class="search-results" v-if="searchResults.length > 0">
      <view v-for="(result, index) in searchResults" :key="index" class="search-result-item">
        {{ result.name }}
      </view>
    </view>
    <view v-else class="no-results" v-if="hasSearched">没有找到相关结果</view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      searchKeyword: '',
      searchResults: [],
      hasSearched: false,
    };
  },
  methods: {
    handleInput(e) {
      this.searchKeyword = e.detail.value;
    },
    handleClear() {
      this.searchKeyword = '';
      this.searchResults = [];
      this.hasSearched = false;
    },
    handleSearch() {
      if (this.searchKeyword.trim() === '') {
        uni.showToast({ title: '请输入搜索关键词', icon: 'none' });
        return;
      }
      this.hasSearched = true;
      // 模拟搜索请求
      setTimeout(() => {
        this.searchResults = [
          { name: '搜索结果1' },
          { name: '搜索结果2' },
          // ...更多搜索结果
        ].filter(result => result.name.includes(this.searchKeyword));
      }, 1000);
    },
  },
};
</script>

<style>
.container {
  padding: 20px;
}
.search-bar {
  display: flex;
  align-items: center;
  margin-bottom: 20px;
}
.search-bar input {
  flex: 1;
  padding: 10px;
  border: 1px solid #ddd;
  border-radius: 4px;
}
.search-bar button {
  padding: 10px 20px;
  margin-left: 10px;
  background-color: #007aff;
  color: #fff;
  border: none;
  border-radius: 4px;
}
.search-results {
  margin-top: 20px;
}
.search-result-item {
  padding: 10px;
  border-bottom: 1px solid #ddd;
}
.no-results {
  margin-top: 20px;
  color: #999;
}
</style>

此代码示例展示了一个基本的搜索组件,包括输入框、搜索按钮和搜索结果展示。搜索功能通过handleSearch方法模拟了一个异步请求,并在搜索结果中进行了关键词过滤。实际项目中,可以将setTimeout替换为真实的API请求,如通过uni-app的uni.request方法调用后端搜索接口。

回到顶部