1. 計算屬性
- vs模板表達(dá)式
模板只能處理簡單運算,在模板中多次引用應(yīng)該使用計算屬性computed - vs methods
結(jié)果相同,但是計算屬性是基于它們的依賴進(jìn)行緩存的,只有相關(guān)依賴發(fā)生改變時它們才會重新求值;每當(dāng)觸發(fā)重新渲染時,調(diào)用方法將總會再次執(zhí)行函數(shù) - vs watch
監(jiān)聽屬性watch代碼重復(fù) - 計算屬性的getter
計算屬性默認(rèn)只有g(shù)etter,因為一般為展示元素,也可以提供setter
2. 監(jiān)聽器
watch選項響應(yīng)數(shù)據(jù)的變化,當(dāng)需要在數(shù)據(jù)變化時執(zhí)行異步或開銷比較大的操作時使用。
3. 用key管理可復(fù)用元素
Vue會復(fù)用已有元素,而非從頭開始渲染,不同input框會共享已輸入的內(nèi)容,想要表達(dá)兩個元素是完全獨立的,不要復(fù)用他們,添加對應(yīng)唯一的key值
4. v-if vs v-show
- v-if
切換過程中條件塊中的事件監(jiān)聽器和子組件會被銷毀和重建;直到條件第一次為真時才會渲染條件塊,更高切換開銷 - v-show
不管初始條件是什么,條件塊總會被渲染,并且只是簡單地基于CSS進(jìn)行切換,更高初始開銷
5. v-for優(yōu)先級比v-if高
v-if可以重復(fù)運行于每個v-for循環(huán)中,可以選擇性地渲染節(jié)點
<ul>
<li v-for="todo in todos" v-if="!todo.isComplete">color</li>
</ul>
6. 數(shù)組變更檢測
數(shù)組的變異方法,可以觸發(fā)視圖更新
- push()
- pop()
- shift()
- unshift()
- splice()
- sort()
- reverse()
數(shù)組的非變異方法,總是返回一個新數(shù)組,可以用新數(shù)組替換舊數(shù)組
- filter()
- map()
- concat()
由于js的限制,Vue不能檢測以下變動的數(shù)組:
- 使用索引值設(shè)置數(shù)組項目
vm.items[index] = newValue
---> Vue.set(vm.items, index, newValue) - 修改數(shù)組的長度
vm.length = newLengh
---> vm.splice(newLengh)