日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

vue封裝tree組件實(shí)現(xiàn)搜索功能

瀏覽:47日期:2022-06-09 14:32:57

我使用的是 vue2 + antd, 那么 antd 的 tree 組件中沒有給我們封裝搜索,其官網(wǎng)提供的搜索也不是封裝好的,而且限制比較大,因?yàn)槲业臉湫芜M(jìn)來(lái)要默認(rèn)展開,官方的代碼是進(jìn)行了響應(yīng)式,就不能上來(lái)就全部展開了

可以看一下,官方的代碼是這樣的,靈活性很低的還是

那我們自己來(lái)根據(jù)這個(gè)思路,進(jìn)行一下改裝, 首先看一下最終呈現(xiàn)是啥樣的:

如上圖,可以看到我們剛進(jìn)來(lái)的時(shí)候,就默認(rèn)是全部展開的,然后上面有一個(gè)搜索框,這里我們可以自己定義交互,可以綁定成搜索的回車事件,也可以綁定change事件, 思路就是當(dāng)我們搜索以后,重置我們下面 tree 樹形的 輸入數(shù)據(jù) data,這樣就簡(jiǎn)單的實(shí)現(xiàn)了搜索以后顯示指定的樹形。

這里面復(fù)雜的地方在于那個(gè)遞歸,因?yàn)檫f歸的時(shí)候我們需要得到 1、 一個(gè)新數(shù)據(jù) 2、搜索子級(jí)的時(shí)候也要全部的父級(jí) 3、 搜索父級(jí)的時(shí)候也要全部的子級(jí),下面來(lái)看看代碼

首先是vue模板中的代碼

<a-input-search   placeholder="搜索"  @change="searchOrg"  :allowClear="true"  v-model="searchPerson"></a-input-search><a-tree ref="tree" @select="onSelect" :tree-data="currentTree" default-expand-all />

從這里可以看出來(lái),我們封裝的要比官方的輕量很多,ref 和 這里的邏輯是沒有涉及的,可以刪掉。

接下來(lái)看我們的業(yè)務(wù)代碼

<script>export default {  props: {    treeList: {      type: Array,      default: () => []    },  },  data() {    return {      searchPerson: "",      currentTree: this.treeList,    }  },  methods: {    searchTree(tree, keyword, includeChildren = false) {      const newTree = []      for (let i = 0; i < tree.length; i++) {const node = tree[i]if (node.title.includes(keyword)) {  // 如果當(dāng)前節(jié)點(diǎn)符合條件,則將其復(fù)制到新的樹形結(jié)構(gòu)中,并根據(jù) includeChildren 參數(shù)決定是否將其所有子節(jié)點(diǎn)也復(fù)制到新的樹形結(jié)構(gòu)中  newTree.push({ ...node, children: includeChildren ? this.searchTree(node.children || [], "", true) : [] })} else if (node.children) {  // 如果當(dāng)前節(jié)點(diǎn)不符合條件且存在子節(jié)點(diǎn),則遞歸遍歷子節(jié)點(diǎn),以繼續(xù)搜索  const result = this.searchTree(node.children, keyword, true)  if (result.length > 0) {    // 如果子節(jié)點(diǎn)中存在符合條件的節(jié)點(diǎn),則將其復(fù)制到新的樹形結(jié)構(gòu)中    newTree.push({ ...node, children: result })  }}      }      return newTree    },    searchOrg() {      this.currentTree = this.searchTree(this.treeList, this.searchPerson, true)    },    async onSelect(selectedKeys, info) {    },  }}</script>

這里我的 tree-data 使用的是父組件傳入的 props , 因?yàn)槲覀兒笃谝臄?shù)據(jù),所以不能直接使用,要接一下, 在用戶輸入的時(shí)候,重置數(shù)據(jù)即可, 主要依賴于 searchTree 這個(gè)遞歸的方法,第三個(gè)參數(shù)是一個(gè)布爾值, 默認(rèn)是 false ,當(dāng)搜索到符合條件的父級(jí)節(jié)點(diǎn)時(shí),除了將該節(jié)點(diǎn)復(fù)制到新的樹形結(jié)構(gòu)中,還會(huì)根據(jù) includeChildren 參數(shù)決定是否將其所有子節(jié)點(diǎn)也復(fù)制到新的樹形結(jié)構(gòu)中。如果 includeChildren 參數(shù)為 true,則遞歸遍歷其所有子節(jié)點(diǎn),并將其復(fù)制到新的樹形結(jié)構(gòu)中。如果 includeChildren 參數(shù)為 false,則不會(huì)遞歸遍歷其子節(jié)點(diǎn),只會(huì)將符合條件的父節(jié)點(diǎn)復(fù)制到新的樹形結(jié)構(gòu)中。

最終在我們搜索的時(shí)候可以呈現(xiàn)以下效果:

當(dāng)我們想從新獲取全部的時(shí)候,只需要情況輸入框即可,這樣我們的遞歸方法會(huì)把完整的樹形返回給我們~

到此這篇關(guān)于vue封裝tree組件實(shí)現(xiàn)搜索功能的文章就介紹到這了,更多相關(guān)vue tree搜索內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: JavaScript
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲91精品| 日韩亚洲精品在线观看| 里番精品3d一二三区| 色婷婷色综合| 久久精品国产68国产精品亚洲| 欧美亚洲在线日韩| 久久精品播放| 日韩中文字幕区一区有砖一区| 日韩在线观看一区二区| 777久久精品| 九九九精品视频| 在线日韩av| 亚洲美女91| 精品国产欧美| 亚洲欧洲另类| 久久久久九九精品影院| 久久精品中文| 亚洲不卡视频| 国产精品99一区二区三区| 精品一区在线| 日韩不卡手机在线v区| 国产欧美日韩精品高清二区综合区 | 久久精品一区二区国产| 日韩电影免费网址| 亚洲欧美专区| av综合电影网站| 亚洲毛片网站| av高清不卡| 日韩毛片网站| 极品av在线| 日韩中文欧美在线| 高清不卡一区| 亚洲精品福利| 久久激情网站| 国产欧美日韩精品一区二区免费| 天堂中文av在线资源库| 日韩有吗在线观看| 亚洲调教视频在线观看| 久久精品 人人爱| 99久久精品费精品国产| 欧美日一区二区三区在线观看国产免| 国产成人精品亚洲日本在线观看| 日韩精彩视频在线观看| 欧美午夜精彩| 国产精品亚洲欧美| 九一国产精品| 国产成人1区| 欧美在线看片| 丝袜美腿成人在线| 日韩av一级| 欧美精品1区| 一区二区亚洲视频| 亚洲不卡av不卡一区二区| 欧美片网站免费| 亚洲永久字幕| 中文字幕一区久| 国产精品入口久久| 免费人成黄页网站在线一区二区| 日韩精品中文字幕第1页| 欧美在线不卡| 99日韩精品| 五月激情久久| 免费在线亚洲欧美| 日韩精品亚洲专区| 麻豆亚洲精品| 激情婷婷综合| 亚洲爱爱视频| av资源中文在线天堂| 国产精品一国产精品| 日韩精品91亚洲二区在线观看| 欧美另类专区| 久久久久国产精品一区二区| 久久精品女人| 你懂的亚洲视频| 国产日韩欧美| 少妇高潮一区二区三区99| 欧美99久久| 国内不卡的一区二区三区中文字幕| 日本不卡高清| 三级欧美在线一区| 老司机久久99久久精品播放免费| 免费不卡中文字幕在线| 亚洲福利专区| 欧美日韩在线二区| 亚洲夜间福利| 婷婷成人综合| 免费不卡中文字幕在线| 极品日韩av| 国产午夜精品一区二区三区欧美 | 青草国产精品| 日韩精品高清不卡| 亚洲日产av中文字幕| 亚洲一区二区小说| 一区二区三区午夜视频| 蜜桃91丨九色丨蝌蚪91桃色| 久久成人一区| 亚洲精品婷婷| 国产欧美三级| 久久精品国产在热久久| 久久99偷拍| 97精品国产福利一区二区三区| av免费不卡国产观看| se01亚洲视频| 99riav国产精品| 一区二区日韩免费看| 热久久久久久| 精品欧美视频| 欧美日韩精品免费观看视完整| 久久精品播放| 蜜臀精品一区二区三区在线观看| 在线免费观看亚洲| 欧美一区二区三区久久精品| 国产精品美女久久久久久不卡| 欧美国产专区| 国产成人精品一区二区三区免费| sm捆绑调教国产免费网站在线观看| 精品捆绑调教一区二区三区| 午夜国产精品视频免费体验区| 日韩精品一二区| 欧美一区自拍| av资源新版天堂在线| 欧美在线资源| 日韩福利视频导航| 91一区二区| 国产模特精品视频久久久久| 日本一区免费网站| 成人在线免费观看网站| 亚洲国产一区二区三区在线播放| 一区二区精品| 久久精品xxxxx| 亚洲精品福利电影| 免费视频最近日韩| 欧美国产不卡| 狠狠久久婷婷| 国产精品伊人| 国产一区亚洲| 91伊人久久| 色综合www| 亚洲+小说+欧美+激情+另类| 九九九精品视频| 久热精品在线| 中文在线中文资源| 亚洲人www| 亚洲成av在线| 日本中文字幕一区二区| 国产va在线视频| 亚洲日韩中文字幕一区| 国产第一亚洲| 日韩一区二区三免费高清在线观看 | 午夜久久久久| 欧美国产三级| 老牛影视一区二区三区| 国内精品伊人| 亚洲精品成a人ⅴ香蕉片| 欧美国产一级| 日本中文字幕一区二区视频| 欧美精品资源| 欧美激情aⅴ一区二区三区 | 国产成人a视频高清在线观看| 国产免费成人| 四虎国产精品免费观看| 日本成人在线不卡视频| 国产综合亚洲精品一区二| 欧美黄色一区| 亚洲精品一二三**| 99热精品久久| 国产福利一区二区精品秒拍 | 色一区二区三区| 久久国产欧美日韩精品| 久久国产精品毛片| 国精品一区二区三区| 久久久免费人体| 亚洲精品影视| 夜久久久久久| 91精品国产调教在线观看 | 国产精品www.| 日韩欧美中文字幕电影| 一区二区三区视频免费观看| 国产成年精品| 久久香蕉网站| 国产精品日韩精品在线播放| 亚洲香蕉久久| 亚洲成人免费| 久久久久美女| 久久婷婷久久| 蜜桃av在线播放| 鲁鲁在线中文| 国产a亚洲精品| 欧美激情日韩| 国产精品15p| 国产欧美大片| 91成人精品观看| 亚洲尤物av| 综合激情视频| 蜜桃视频一区二区| 亚洲小说春色综合另类电影| 在线看片一区| 日本vs亚洲vs韩国一区三区二区| 亚洲精品乱码久久久久久蜜桃麻豆| 视频一区在线播放|