vue使用mui遇到的坑及解決
使用mui遇到的坑記錄
主要用到webpack打包工具與mui,mint ui,其中mui有不少坑,在此記錄
先是用mui的tab組件做了個底部選項卡,如下
不錯,樣式還行,但是后期發(fā)現(xiàn)切換選項的時候會報錯Unable to preventDefault inside passive event listener due to target being treated as passive,如下
但是這個錯誤并不會影響運行 ,但是我有強迫癥,查閱資料發(fā)現(xiàn)是touch事件不能偵聽preventDefault的問題,就是觸發(fā)觸摸事件時候引起的問題,可以簡單點給通配選擇器加個樣式touch-action:none,發(fā)現(xiàn)成功解決。
之后根據(jù)需求需要一個橫向滾動的導(dǎo)航欄,大概長這樣
要求可以區(qū)域滾動,mui很友好 的給我們提供了這個組件,當然目前這個橫向滾動的例子似乎沒在官網(wǎng)上,需要我們下載官方的文檔,github網(wǎng)址https://github.com/dcloudio/mui 里面可以找到這個案例
路徑可以在圖中看到,可以雙擊點開查看
廢話不多說,然后官方要求加載js文件,ok直接引入,之后我用webpack打包后發(fā)現(xiàn)報錯了
Uncaught TypeError: ‘caller’,‘callee’,and ‘arguments’ properties may not be accessed on strict mode
于是查閱資料發(fā)現(xiàn)webpack默認使用js的嚴格模式,但mui有些并不是嚴格模式,所以需要修改一下,安裝babel包 并進入 .babelrc 文件 添加代碼
transform-remove-strict-mode
問題解決,之后又需要指定初始化滾動位置,根據(jù)官方文檔需要使用scrollTo(x,y,time)函數(shù),ok,直接復(fù)制過來,問題來了,
Uncaught TypeError: (0 , _muiMin2.default)(…).scroll(…).scrollTo is not a function
找了半天資料發(fā)現(xiàn)要在mounted鉤子函數(shù)中使用,因為在此之前改組件還未完全渲染完成,放created中都不行(我大多數(shù)時候習(xí)慣在created中處理業(yè)務(wù))。
可是問題又來了,頭都要爆炸了,設(shè)置初始滾動位置后,發(fā)現(xiàn)滑動一下就空白了,后來發(fā)現(xiàn)是scrollTo的參數(shù)要求要數(shù)字類型,而我給的是字符串類型,用parseInt轉(zhuǎn)換一下即可。
隨著我的內(nèi)容越來越多,出現(xiàn)了滾動條,后面發(fā)現(xiàn)在手機上無法上下滾動,只能左右滾動之前的導(dǎo)航欄組件,后面發(fā)現(xiàn)之前設(shè)置的touch-action可以設(shè)置多種屬性,于是我發(fā)現(xiàn)了pan-y這個屬性,用于啟用單指垂直平移手勢,設(shè)置之后發(fā)現(xiàn),沒有之前的Unable啥的錯誤,也可以上下滾動了。
沒錯,問題又來了,我點擊底部的選項卡發(fā)現(xiàn)不能切換,查閱資料才發(fā)現(xiàn)這是因為類名mui-tab-item沖突的問題
mui的js沖突了,有2種解決方法
方法1
把mui-tab-item 的樣式復(fù)制過來,然后改一下類名,可以改mui-tab-item-s之類的不容易混亂
方法2
在主組件中(一般是app組件)加入如下代碼
mounted() { mui('body').on('tap', 'a', function () { document.location.href = this.href; }); }
注意,一定要在mounted鉤子函數(shù)中使用。
還有個小問題,vue的滾動事件問題,若父容器設(shè)置了overflow:hidden,使用onscroll綁定事件會無效,若不想改變父容器overflow屬性,可以用
addEventListener('scroll',function(){},true)
注意加上true參數(shù)表示捕獲模式(該函數(shù)詳情可參考事件冒泡)。
到此,目前已發(fā)現(xiàn)的問題已解決
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
在Vue中使用deep深度選擇器修改element UI組件的樣式
這篇文章主要介紹了在Vue中使用deep深度選擇器修改element UI組件的樣式,本文分為兩種方法給大家介紹,在這小編比較推薦使用第二種使用 deep 深度選擇器,感興趣的朋友跟隨小編一起看看吧2022-12-12Element通過v-for循環(huán)渲染的form表單校驗的實現(xiàn)
日常業(yè)務(wù)開發(fā)中,form表單校驗是一個很常見的問題,本文主要介紹了Element通過v-for循環(huán)渲染的form表單校驗的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04Vue+better-scroll 實現(xiàn)通訊錄字母索引的示例代碼
通訊錄字母索引是常用的一種功能,本文主要介紹了Vue+better-scroll 實現(xiàn)通訊錄字母索引,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06解決vue3中from表單嵌套el-table時填充el-input,v-model不唯一問題
這篇文章主要給大家介紹一下如何解決vue3中from表單嵌套el-table時填充el-input,v-model不唯一問題,文中有相關(guān)的解決方法,通過代碼示例介紹的非常詳細,需要的朋友可以參考下2023-07-07