摘要:大家想想一想這個(gè)組件最終效果形成一個(gè)樹(shù)形結(jié)構(gòu)里面有相同的模塊這個(gè)是手風(fēng)琴組件中最小的組件單元。再次點(diǎn)擊節(jié)點(diǎn)就會(huì)開(kāi)啟子樹(shù)。
show 效果 說(shuō)說(shuō)我的思路
數(shù)據(jù)結(jié)構(gòu)
{"flag":1,"data":[{"id":1,"name":"書(shū)法類(lèi)型","child":[{"id":2,"name":"硬筆"},{"id":3,"name":"軟筆"}]},{"id":4,"name":"獎(jiǎng)品類(lèi)型","child":[{"id":5,"name":"文房四寶"}]}]}
本來(lái)剛開(kāi)始做的時(shí)候, 說(shuō)是做個(gè)兩級(jí)的菜單, 為了加深自己的理解, 特意用遞歸組件模式開(kāi)發(fā)。做成無(wú)限的。減少下次開(kāi)發(fā)的代碼量。
原理:
假設(shè)本節(jié)點(diǎn)有childs 屬性, 就無(wú)限遞歸下去, 直到本節(jié)點(diǎn)沒(méi)有childs,結(jié)束遞歸。
大家想想一想:
這個(gè)組件最終效果
形成一個(gè)樹(shù)形dom結(jié)構(gòu)(里面有相同的模塊 spreadComp.vue)這個(gè)是 手風(fēng)琴組件 中 最小的組件單元。
里面的組件通信:
我采用 root級(jí)組件與子孫級(jí)組件通信(子孫組件的 事件 會(huì)分發(fā)到 root級(jí)組件, root 級(jí)組件通過(guò)更改自身狀態(tài)響應(yīng)事件, 同時(shí)向子孫組件發(fā)送事件),相當(dāng)于 中央集權(quán), 再?gòu)闹醒敕职l(fā).
重點(diǎn) 怎么知道 當(dāng)前節(jié)點(diǎn)是展開(kāi)的, 還是關(guān)閉我采用 codeList 及 "01-02-03" 代表 節(jié)點(diǎn) 01 、02 的樹(shù)節(jié)點(diǎn)是展開(kāi)的, 03 是結(jié)束節(jié)點(diǎn)。以此類(lèi)推。。。
當(dāng)點(diǎn)擊 01-02-03 中 02節(jié)點(diǎn), 02 節(jié)點(diǎn) 就會(huì)關(guān)閉子樹(shù)。 再次點(diǎn)擊 02節(jié)點(diǎn) 就會(huì)開(kāi)啟子樹(shù)。
展開(kāi)動(dòng)畫(huà) 關(guān)閉動(dòng)畫(huà).. 仿照 elem 過(guò)渡動(dòng)畫(huà)效果。(我感覺(jué)最難)
show 代碼 事件分發(fā)代碼// 父子事件 交互 const eventMixin = {} eventMixin.install = (Vue, options) => { Vue.mixin({ methods: { // 向父組件 分發(fā)事件 sendFather (cpName , {event, playLoad}) { // 子向父節(jié)點(diǎn) let parent = this.$parent const root = this.$root while (parent.$options.name !== cpName && parent !== root) { parent = parent.$parent } parent.$emit(event, playLoad) }, // 向子孫組件分發(fā)事件 sendInfiniteCd(cpName, {event, playLoad}) { // 最小組件 const sendChildMsg = (item) => { let mainC = item.$children mainC.map(cmp => { // 獲取組件姓名 const name = cmp.$options.name if (name === cpName) { cmp.$emit(event, playLoad) sendChildMsg(cmp) } return }) } // 初始化函數(shù) sendChildMsg(this) } } }) } export default eventMixin
spreadComp index.vue
全部
spreadComp spreadComp.vue
{{list.name}} {{item.name}}{{item.name}}
spread spreadTransition.vue
// 借鑒 餓了嗎 過(guò)渡組件庫(kù)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/94726.html
摘要:并總結(jié)經(jīng)典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優(yōu)化項(xiàng)目,在瀏覽器端的層面上提升速度,幫助初中級(jí)前端工程師快速搭建項(xiàng)目。 本文是關(guān)注微信小程序的開(kāi)發(fā)和面試問(wèn)題,由基礎(chǔ)到困難循序漸進(jìn),適合面試和開(kāi)發(fā)小程序。并總結(jié)vue React html css js 經(jīng)典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優(yōu)化項(xiàng)目,在瀏覽器端的層面上提升速度,幫助初中級(jí)前端工程師快...
摘要:并總結(jié)經(jīng)典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優(yōu)化項(xiàng)目,在瀏覽器端的層面上提升速度,幫助初中級(jí)前端工程師快速搭建項(xiàng)目。 本文是關(guān)注微信小程序的開(kāi)發(fā)和面試問(wèn)題,由基礎(chǔ)到困難循序漸進(jìn),適合面試和開(kāi)發(fā)小程序。并總結(jié)vue React html css js 經(jīng)典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優(yōu)化項(xiàng)目,在瀏覽器端的層面上提升速度,幫助初中級(jí)前端工程師快...
摘要:并總結(jié)經(jīng)典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優(yōu)化項(xiàng)目,在瀏覽器端的層面上提升速度,幫助初中級(jí)前端工程師快速搭建項(xiàng)目。 本文是關(guān)注微信小程序的開(kāi)發(fā)和面試問(wèn)題,由基礎(chǔ)到困難循序漸進(jìn),適合面試和開(kāi)發(fā)小程序。并總結(jié)vue React html css js 經(jīng)典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優(yōu)化項(xiàng)目,在瀏覽器端的層面上提升速度,幫助初中級(jí)前端工程師快...
閱讀 3669·2019-08-30 15:55
閱讀 1441·2019-08-29 16:20
閱讀 3755·2019-08-29 12:42
閱讀 2740·2019-08-26 10:35
閱讀 1182·2019-08-26 10:23
閱讀 3506·2019-08-23 18:32
閱讀 1083·2019-08-23 18:32
閱讀 3005·2019-08-23 14:55