Vue封裝實現(xiàn)可配置的搜索列表組件
在Vue.js開發(fā)中,經(jīng)常會遇到需要展示搜索和列表的需求。為了提高代碼復(fù)用性和開發(fā)效率,我們可以封裝一個可配置的搜索列表組件,使其能夠根據(jù)配置展示搜索表單和列表數(shù)據(jù),并支持搜索和分頁功能。本篇博客將引導(dǎo)您實現(xiàn)這樣一個組件。
組件結(jié)構(gòu)
我們將創(chuàng)建一個名為SearchList的組件,它將包含兩個子組件:SearchForm和DataList。SearchForm用于展示搜索表單和處理搜索事件,DataList用于展示列表數(shù)據(jù)和處理分頁事件。
搜索表單
首先,我們創(chuàng)建一個名為SearchForm的子組件,用于展示搜索表單和處理搜索事件??梢愿鶕?jù)業(yè)務(wù)需求自定義搜索表單的字段和樣式,并在用戶點擊搜索按鈕時觸發(fā)自定義事件。
<template> <form> <!-- 搜索表單字段配置,可以根據(jù)業(yè)務(wù)需求自定義 --> <input v-model="searchText" type="text" placeholder="請輸入搜索關(guān)鍵字" /> <button @click="handleSearch">搜索</button> </form> </template> <script> export default { data() { return { searchText: '' } }, methods: { handleSearch() { // 將搜索關(guān)鍵字通過自定義事件傳遞給父組件 this.$emit('search', this.searchText) } } } </script>
列表數(shù)據(jù)
然后,我們創(chuàng)建一個名為DataList的子組件,用于展示列表數(shù)據(jù)和處理分頁事件??梢愿鶕?jù)業(yè)務(wù)需求自定義列表的列和樣式,并在用戶點擊分頁按鈕時觸發(fā)自定義事件。
<template> <ul> <!-- 列表數(shù)據(jù)渲染,可以根據(jù)業(yè)務(wù)需求自定義 --> <li v-for="item in dataList" :key="item.id">{{ item.name }}</li> </ul> <button @click="handlePrevPage">上一頁</button> <span>{{ currentPage }}</span> <button @click="handleNextPage">下一頁</button> </template> <script> export default { props: { dataList: { type: Array, default: () => [] }, currentPage: { type: Number, default: 1 } }, methods: { handlePrevPage() { // 將用戶點擊的上一頁事件通過自定義事件傳遞給父組件 this.$emit('prev-page') }, handleNextPage() { // 將用戶點擊的下一頁事件通過自定義事件傳遞給父組件 this.$emit('next-page') } } } </script>
搜索列表組件
最后,我們創(chuàng)建名為SearchList的父組件,封裝SearchForm和DataList,并通過props接收配置參數(shù)進(jìn)行展示。我們將在父組件的methods中處理搜索和分頁事件,并用axios發(fā)送請求獲取數(shù)據(jù)。
<template> <div> <search-form @search="handleSearch"></search-form> <data-list :data-list="listData" :current-page="currentPage" @prev-page="handlePrevPage" @next-page="handleNextPage"></data-list> </div> </template> <script> import SearchForm from './SearchForm' import DataList from './DataList' export default { components: { SearchForm, DataList }, data() { return { listData: [], currentPage: 1 } }, methods: { handleSearch(keyword) { // 發(fā)送請求獲取數(shù)據(jù) axios .get(`/api/data?keyword=${keyword}&page=${this.currentPage}`) .then(response => { this.listData = response.data }) .catch(error => { console.error(error) }) }, handlePrevPage() { // 處理上一頁事件 this.currentPage-- this.handleSearch() }, handleNextPage() { // 處理下一頁事件 this.currentPage++ this.handleSearch() } } } </script>
在SearchList組件中,我們將SearchForm和DataList作為子組件導(dǎo)入,并直接引用它們。通過監(jiān)聽SearchForm的search事件和DataList的prev-page和next-page事件,并在methods中發(fā)送請求獲取數(shù)據(jù),我們可以實現(xiàn)搜索和分頁功能。
使用SearchList組件
在父組件中使用SearchList組件,通過props傳遞配置參數(shù),以展示搜索表單和列表數(shù)據(jù)。
plaintext
<template> <div> <search-list :columns="columns" :page-size="pageSize"></search-list> </div> </template>
import SearchList from './SearchList export default { components: { SearchList }, data() { return { columns: [ { label: '姓名', prop: 'name' }, { label: '性別', prop: 'gender' } ], pageSize: 10 } } }
在父組件中,我們將SearchList作為子組件導(dǎo)入,并通過props傳遞columns和pageSize參數(shù)??梢愿鶕?jù)業(yè)務(wù)需求自定義columns和pageSize參數(shù),并根據(jù)實際情況處理搜索和分頁事件。
通過封裝可配置的搜索列表組件,我們可以在Vue.js開發(fā)中實現(xiàn)搜索和列表展示的復(fù)用,提高開發(fā)效率并增加代碼可維護(hù)性。使用SearchForm和DataList組件,我們可以根據(jù)業(yè)務(wù)需求自定義搜索表單和數(shù)據(jù)列表的展示樣式,并在父組件中處理搜索和分頁事件。
到此這篇關(guān)于Vue封裝實現(xiàn)可配置的搜索列表組件的文章就介紹到這了,更多相關(guān)Vue搜索列表組件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue項目中v-bind動態(tài)綁定src路徑不成功問題及解決
這篇文章主要介紹了Vue項目中v-bind動態(tài)綁定src路徑不成功問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-04-04vue3.0語法糖內(nèi)的defineProps及defineEmits解析
這篇文章主要介紹了vue3.0語法糖內(nèi)的defineProps及defineEmits解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-04-04uni-app制作小程序?qū)崿F(xiàn)左右菜單聯(lián)動效果
這篇文章主要介紹了uni-app制作小程序?qū)崿F(xiàn)左右菜單聯(lián)動效果,實現(xiàn)步驟和思路都很簡單,今天通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-11-11vue父組件傳值子組件報錯Avoid?mutating?a?prop?directly解決
這篇文章主要為大家介紹了vue父組件傳值子組件報錯Avoid?mutating?a?prop?directly解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09Vant?Weapp組件picker選擇器初始默認(rèn)選中問題
這篇文章主要介紹了Vant?Weapp組件picker選擇器初始默認(rèn)選中問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-01-01Vue使用Antd中a-table實現(xiàn)表格數(shù)據(jù)列合并展示示例代碼
文章介紹了如何在Vue中使用Ant?Design的a-table組件實現(xiàn)表格數(shù)據(jù)列合并展示,通過處理函數(shù)對源碼數(shù)據(jù)進(jìn)行操作,處理相同數(shù)據(jù)時合并列單元格2024-11-11element el-table實現(xiàn)多級表頭的代碼
多級表頭的作用與優(yōu)勢,多級表頭能夠清晰地展示數(shù)據(jù)的層次結(jié)構(gòu),幫助我們更好地理解數(shù)據(jù)之間的關(guān)系,下面通過本文給大家介紹element el-table實現(xiàn)多級表頭的代碼,感興趣的朋友跟隨小編一起看看吧2024-04-04