感謝 遺忘的過路人 這位部落客,發現了 進階前端進階(一) 中的list轉樹形資料的問題。當然也是我的疏忽。抱歉!!!
将list資料不按id順序排序,将之打亂
使用listToArray方法得到的資料便會出現問題。
對,就是這一行代碼。加上這一行代碼,便解決了。
之前的方法,隻要進行一次周遊即可,然而現在發現,之前的方法的前提是資料已經是排好序的。
如果錯亂了呢?那不得不進行一次sort排序。這樣的話,不還是兩次周遊了嗎?(加上了一次sort排序周遊)
再次分析一下原理
我們知道,核心原理就是這個東西 itemMap[id] = item; 将list資料以對象的屬性跟值存儲,友善擷取。
一次周遊的話,給對象itemMap添加屬性的同時擷取其父親節點,如果順序錯亂的話,自然就會出現問題了。
此方法針對vue項目hash路由模式
這兩者的差別,很簡單,
過渡就是字面上意思,比如,寬度從1px,慢慢增加到10px,這便是一種過渡;
動畫,也是字面上意思,不過跟過渡最大的差別就是最終的狀态,不管執行了什麼動畫,最終的狀态會還原,比如說寬度從1px,慢慢增加到10px,動畫結束後,會還原到1px。
舉幾個例子,舉一反三即可。
1、過渡屬性:
執行個體(滑鼠懸浮在div上,3秒後,寬度從150px,2秒的時間均勻增長到400px,然後停止)
2、動畫屬性
執行個體(div的背景顔色從紅色->綠色->藍色,藍色->綠色->紅色,無限循環)
我們知道JavaScript中的,apply,call,bind的使用及其差別。
有個地友善用到了,就是事件總線。
首先,簡述一下原理。
其實很簡單的。
先申明一個對象bus,其中的對象用來存儲事件名稱,其值用來存儲需要執行的方法。emit發送事件的時候,給bus添加事件名稱跟方法,on則接收事件名,來觸發對應的方法。
很簡單吧!
代碼如下:
看完代碼,你一定很懵,這,這,這,也太簡單了吧!的确是這樣。以上就是最簡單的事件總線代碼。我本人也使用這個,畢竟簡單、粗暴。
學習技術要執着,但也不能太執着!