欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

search.vue搜索

錢艷冰2年前8瀏覽0評論

Search.vue是一種在Vue.js代碼框架下實現的搜索組件。該組件是一個可重用的單獨Vue.js組件,可輕松移植到任何Vue項目中。

使用search.vue組件,用戶可以通過輸入要搜索的字符串來快速搜索內容。該組件可以自動過濾出匹配用戶搜索字符串的元素,同時還提供了以下一些功能:

  • 數據加載時自動顯示loading提示
  • 搜索結果不存在時自動顯示提示
  • 輸入框中可支持多個關鍵字搜索

下面是一段簡單的代碼展示如何實現search.vue組件:

<template>
<div>
<input v-model="search">
<ul v-if="hasSearchResult">
<li v-for="item in searchResult" :key="item">{{ item }}</li>
</ul>
<p v-else-if="isLoading">加載中,請稍后...</p>
<p v-else>沒有搜索結果</p>
</div>
</template>
<script>
import axios from 'axios';
export default {
data() {
return {
search: '',
isLoading: false,
searchResult: [],
}
},
watch: {
search: debounce(async function () {
if (!this.search) {
this.searchResult = [];
return;
}
this.isLoading = true;
const result = await axios.get('/search', {
params: {
keyword: this.search,
},
});
this.searchResult = result.data;
this.isLoading = false;
}, 800),
},
computed: {
hasSearchResult() {
return !this.isLoading && this.searchResult.length >0;
},
},
};
function debounce(fn, delay) {
let timer = null;
return function () {
const args = arguments;
const context = this;
clearTimeout(timer);
timer = setTimeout(function () {
fn.apply(context, args);
}, delay);
}
}
</script>

以上代碼展示了如何使用search.vue組件進行搜索。首先定義了一個數據對象,包括一個search表示搜索字符串,一個isLoading表示是否正在加載,一個searchResult表示搜索結果。

使用watch來監視search數據變化,從而響應用戶在輸入框中輸入的變化。在watch函數中,通過使用debounce來設定在用戶輸入文本后發生搜索行為的間隔時間,并使用axios調用異步API來獲得搜索結果。API返回的結果將被存儲在searchResult變量中,并更新頁面中顯示結果的部分。

在computed中,通過計算是否正在加載和是否存在搜索結果來決定顯示的內容。如果正在加載,則顯示加載中提示;如果沒有搜索結果,則顯示無結果提示;否則,則根據搜索結果渲染出列表。

總之,search.vue組件是一個非常實用的Vue組件,它可以使你的網站變得更加用戶友好和實用。