Uni-app不僅支持應用生命周期和頁面生命周期,還支持vue實例的以下生命周期功能:
註意:不要在選項屬性或回調上使用箭頭函數,比如created:()= & gt;Console.log(this.a)或vm。$watch('a ',newValue = & gtthis.myMethod()).因為arrow函數被綁定到父上下文,所以這不會是您所期望的Vue的壹個實例,this.a或this.myMethod也將是未定義的。
幾乎都支持Vue的官方文檔:模板語法。先說不支持的情況。
(1)不支持純HTML。
uni-app非H5端的所有BOM/DOM都不能用,也就是說v-html指令不能用,可以用富文本組件代替。或者使用三方組件wxparse,在hello uni-app中有例子。
(2)不支持壹些復雜的JavaScript渲染表達式。
非H5終端不支持復雜的JavaScript表達式。目前能用的是+-*%?: != = = = = & gt& lt[].剩下的還需要完善。
(3)不支持過濾器
編譯到App和applet平臺時,不支持過濾器。可以用computed提前計算數據(如果是數組類型,提前計算整個數組)代替filters。
備註:自HBuilderX 1.7.1起,微信小程序平臺支持濾鏡。
數據必須聲明為返回初始數據對象的函數;否則關閉頁面時數據不會自動銷毀,再次打開頁面時會顯示最後壹次數據。
註意:微信小程序端,uni-app將數據綁定功能委托給Vue,開發者需要按照Vue 2.0的編寫方式實現數據綁定,不支持微信小程序的數據綁定編寫方式,所以不支持以下編寫方式:
需要修改如下:
支持Vue的官方文檔:計算屬性。
全局變量的實現方式需要遵循Vue單文件模式的開發規範。具體可參考uni-app全局變量的幾種實現方法。
非H5終端不支持在模板內的方法中使用函數。
註:從HBuilderX 1.7.1開始,微信小程序平臺的模板中支持方法中的函數。
為了節省性能,我們通過編譯器將類和樣式的表達式硬編碼到uni-app中。
完全支持官方Vue文檔:條件渲染。
全面支持vue列表渲染Vue官方文檔:列表渲染。請註意,嵌套列表呈現必須指定不同的索引!必填:key="xx "。
註意:當同壹級別有多個v-for時,key的值不允許重復,key的綁定不支持表達式,需要做如下處理。
幾乎都支持Vue的官方文檔:事件處理程序。事件映射表如下:
註意:
(1)也可以使用不在事件映射表中的本地事件。例如,map組件的regionchange事件直接在組件上寫成@regionchange。同時,這個事件非常特殊,它的事件類型有begin和end兩種,這讓我們無法區分handleProxy中的事件是什麽。因此,當您監聽此類事件時,您可以同時監聽事件名稱和事件類型
(2)為了兼容所有終端,需要通過v-on或@的方式綁定事件。請不要在applet端使用bind和catch來綁定事件。
(3)事件修飾符
(4)如果需要禁止頁面在mask下滾動,可以使用@ touchmove . stop . prevent = " move handle ",可以用來處理touch move的事件,也可以是空函數。
(5)按鍵修飾符:uni-app運行在手機上,沒有鍵盤事件,所以不支持按鍵修飾符。
支持Vue官方文檔:表單控件綁定。建議在開發過程中直接使用uni-app: form組件。使用示例:
(1)H5的選擇標簽被選取器組件替換。
(2)表單元素radio由radio-group組件代替。
Component是整個Vue.js中最復雜的部分,支持Vue的官方文檔:component。存在並且只能以單個文件組件(.vue組件)。其他如:動態組件、自定義呈現和
(1)暫時不支持在引用組件時在組件上定義本地事件(如click)、樣式屬性(如v-show(可由v-if替換)和類樣式(例如:
插槽(作用域還不支持它)
(2)動態組件
(3)異步組件
(4)內嵌模板
(5)X模板
(6)保活
(7)過渡
(8)班級
(9)風格
(10)當嵌套在slot中的其他組件在組件中使用時,不支持v-for。
Uni-app提供了豐富的UI組件,如picker、map等。需要註意的是,原生組件上的事件綁定需要通過vue的事件綁定語法進行綁定,比如bindchange="eventName "的事件需要寫成@change="eventName "。比如:
Uni-app支持全局組件的配置,需要在main.js中進行全局註冊,註冊後組件可以在所有頁面中使用。註意:Vue.component的第壹個參數必須是靜態字符串。示例:
(1)main.js進行全球註冊。
(2)組件可以直接在2)index.vue中使用。
在uni-app中,這些是保留關鍵字,而不是組件名稱。
註意:除了上面列表中的名稱,標準的HTML和SVG標記名不能用作組件名。
(1)如何獲取最後壹頁傳遞的數據?
在onLoad中,onLoad的參數是其他頁面打開當前頁面時傳遞的數據。
(2)如何設置全局數據和全局方法。
Uni-app內置了vuex。關於其在app中的使用,請參考hello-uniapp的store/index.js。
(3)如何捕捉app的錯誤?
因為onError不是壹個完整的生命周期,所以我們只提供了壹個捕捉錯誤的方法,在app的根組件中添加壹個名為onError的回調函數。如下所示:
(4)組件屬性設置不生效的解決方案
當某些屬性重復設置為相同的值時,它們將不會同步到視圖圖層。例如,每次scroll-view組件的scroll-top屬性值設置為0時,只有第壹次才能順利返回頂部。這和道具的單向數據流特性有關。在組件內部的滾動頂部的實際值改變之後,它的綁定屬性不會壹起改變。有兩種解決方案(以滾動視圖組件為例):
備註:第二種解決方案可能會導致某些組件抖動,建議使用第壹種解決方案。