目前在做一個使用了vant組件庫的項目,項目中有一塊內容使用了DropDownMenu組件實現一個下拉菜單的效果,當菜單下拉的時候,菜單欄以及其上方搜索欄的背景顏色和字體顏色都會發生改變,關閉時會恢復原狀。
這塊我是使用了兩個css樣式用於區分菜單開始和菜單關閉的狀態,並綁定到相對應dom的class屬性上。然后通過van-dropdown-menu-item的open和close的時間進行class的切換。
故事,就從這里開始了。。。
當我后面自己測試的時候發現,單一個菜單已經打開的時候,再點擊另一個菜單,之前打開的菜單會自動關閉,這本來是一件好事對吧。但這廝從左往右點的時候是正常的,但從從右往左點的時候,在已經有菜單欄開啟的時候,背景變了回去。
why?why?why?
在確認了不是css的問題之后,我分析是open和close事件在執行過程中出現了問題。
分別給open和close加了個console.log()輸出。然后發現從左往右的時候,open和close的順序是:open1->close1->open2;從右往左的時候是:open2->open1->close2
這就導致,當我們從右向左點擊菜單的時候,最后執行的總會是前一個van-dropdown-menu的close。
至於如何解決的話。。。目前我是給每個菜單都加了個參數,用於表示他們之間的關系,如果open和close事件都是同一個菜單觸發的話,close中改變樣式的事件才會觸發,如果是不一樣的話則不會觸發。
其本質相當於關閉了兩個菜單按鈕切換開啟時的close事件,相當於:從左往右,open1->open2;從右往左,open2->open1。
也不知道會不會出問題,就暫且保留吧。