您好,登錄后才能下訂單哦!
這篇文章主要介紹了Vue中的options選項怎么用的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Vue中的options選項怎么用文章都會有所收獲,下面我們一起來看看吧。
數據: data,props,propsdata,computed,methods,watch
DON: el,template,render,rebderError
生命周期鉤子函數:beforeCreate,created,beforeMount,mounted,beforeUpdate,updated,activated,deactivated,beforeDestroy,destroyed,erroCaptured。
資源:directives,filters,components
組合:parent,mxins,extends,provide,inject
el(掛在點)
new Vue({ el:"#app" template:`<div>我是小明</div>` }) 可以使用$mount代替 new Vue({ template:`<div>我是小明</div>` }).$mount("#app")
data(內部數據)支持對象和函數,優先使用函數
會被Vue監聽
會被Vue實例代理
每次data的讀寫都會被Vue監聽
Vue會在data變化是更新UI
對象 new Vue({ template:"<div>{{n}}</div>", data:{ n:0 } }).$mount('#app') 函數 vue非完整版只支持函數 new Vue({ template:"<div>{{n}}</div>", data(){ return { m:5 } } })$mount('#app')
methods(方法)事件處理函數或者普通函數
new Vue({ template:"<div>{{n}}{{ add()}} <button @click="add">按鈕</button></div>", data:{ n:0 }, methods:{ add(){ console.log('我可以是事件處理函數也可以是普通函數') } } }).$mount('#app')
components(vue組件:注意大小寫)三種方式
注冊全局組件 Vue.component('Deon1', { template: "<h3>全局組件</h3>" }) 注冊局部組件 const deon2 = { template: "<h3>局部組件 {{n}}</h3>", //在組建中data必須使用函數 data() { return { n: "小明" } } } new Vue({ components: { Deon2: deon2, Deon3:{ template:"<h3>組件3</h4>" } }, template: ` <div>頁面 <Deon1></Deon1> <Deon2></Deon2> <Deon3></Deon3> </div> ` }).$mount('#app')
deon4.vue文件
<template> <div>我是deon.vue文件{{ name }}</div> </template> <script> export default { data() { name: "組件4"; }, }; </script> <style scoped> div { border: 1px solid red; } </style>
main.js
import Deon4 from './deon4.vue' Vue.component('Deon1', { template: "<h3>全局組件</h3>" }) const deon2 = { template: "<h3>局部組件 {{n}}</h3>", //在組建中data必須使用函數 data() { return { n: "小明" } } } new Vue({ components: { Deon2: deon2, Deon3: { template: "<h3>組件3</h4>" }, Deon4 }, template: ` <div>頁面 <Deon1></Deon1> <Deon2></Deon2> <Deon3></Deon3> <Deon4><Deon4> </div> ` }).$mount('#app')
常用的四個生命周鉤子函數
created: 實例出現在內存中
mounted:實例出現在頁面中觸發
updated:實例出現了變化觸發
destroyed:實例被銷毀了觸發
new Vue({ template:"<div>{{n}}</div>", data:{ n:0 }, created() { console.log("實例出現在內存中了觸發"); }, mounted() { console.log("實例出現在頁面中觸發"); }, updated() { console.log("實例出現了變化觸發"); }, destroyed() { console.log("實例被銷毀了觸發"); } }).$mount('#app')
props(外部數據)父組件想子組傳值
name="n"(傳入字符串)
:name="n"(傳入this.n數據)
:fn="add":(傳入this.add函數)
new Vue({ components: { Deon1: { props: ["m"], template: "<div>{{m}}</div>" } }, template: `<div><Deon1 :m="m"></Deon1></div>`, data: { m: 666 } }).$mount('#app')
不需要加括號
他會根據依賴是否變化來緩存(如果依賴沒有變化,就不會重新結算)
類型:{ [key: string]: Function | { get: Function, set: Function } }
被計算出來的屬性就是計算數據
例子1 用戶名展示
例子2 列表展示
如果依賴的屬性沒有變,化就不會重新計算
getter/setter默認不會做緩存,Vue做了特殊處理
如何緩存?看示例 這是示例不是Vue的實現
var vm = new Vue({ data: { a: 1 }, computed: { // 僅讀取 aDouble: function () { return this.a * 2 }, // 讀取和設置 aPlus: { get: function () { return this.a + 1 }, set: function (v) { this.a = v - 1 } } } }) vm.aPlus // => 2 vm.aPlus = 3 vm.a // => 2 vm.aDouble // => 4
data變化,就會執行函數
options.watch用法
this.$watch用法
deep:偵聽的對象的 property 改變時被調用,不論其被嵌套多深
immediate:偵聽開始之后被立即調用
類型:{ [key: string]: string | Function | Object | Array }
當數據變化時,執行一個函數
例子1撤銷
例子2 模擬computed 這樣很傻,一般不這樣做
看示例
原本 let obj = {a:'a'} 現在 obj={a:'a'} 請問
obj變了沒有. obj.a變了沒有
簡單類型看至,復雜類型(對象)看地址
這其實就是 ===的規則
示例:
var vm = new Vue({ data: { a: 1, b: 2, c: 3, d: 4, e: { f: { g: 5 } } }, watch: { a: function (val, oldVal) { console.log('new: %s, old: %s', val, oldVal) }, // 方法名 b: 'someMethod', // 該回調會在任何被偵聽的對象的 property 改變時被調用,不論其被嵌套多深 c: { handler: function (val, oldVal) { /* ... */ }, deep: true//監聽是否深入 }, // 該回調將會在偵聽開始之后被立即調用 d: { handler: 'someMethod', immediate: true }, // 你可以傳入回調數組,它們會被逐一調用 e: [ 'handle1', function handle2 (val, oldVal) { /* ... */ }, { handler: function handle3 (val, oldVal) { /* ... */ }, /* ... */ } ], // watch vm.e.f's value: {g: 5} 'e.f': function (val, oldVal) { /* ... */ } } }) vm.a = 2 // => new: 2, old: 1
注意,不應該使用箭頭函數來定義 watcher 函數 (例如 searchQuery: newValue => this.updateAutocomplete(newValue)
)。理由是箭頭函數綁定了父級作用域的上下文,所以 this 將不會按照期望指向 Vue 實例,this.updateAutocomplete
將是 undefined
如果object.a變了,請問object算不算變
如果需要的答案是(也沒變啦),那么就用deep: true
如果需要的答案是(沒有變),那么就用deep: false
deep的意思是監聽 object的時候是否往深了看
computed是計算屬性,也就是依賴某個值或者props通過計算得來得數據;
computed的值是在getter執行之后進行緩存的,只有在它依賴的數據發生變化,會重新調用getter來計算;
不支持異步,當computed內有異步操作時無效,無法監聽數據的變化
調用時不需要加括號
watch是監聽器,可以監聽某一個數據,然后執行相應的操作;
不支持緩存,數據變直接會觸發相應的操作;
監聽的函數接收兩個參數,第一個參數是最新的值;第二個參數是輸入之前的值;
支持異步操作;
deep選項:偵聽的對象的 property 改變時被調用,不論其被嵌套多深
immediate:為true時偵聽開始之后被立即調用
關于“Vue中的options選項怎么用”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Vue中的options選項怎么用”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。