區別:1、計算屬性在呼叫時需要在範本中渲染,修改計算所依賴元資料;watch在呼叫時只需修改元資料。 2.計算屬性預設深度依賴,watch預設淺度觀測。 3.計算屬性適合做篩選,不可異步;watch適合做執行異步或開銷較大的操作。
computed
#computed 是計算屬性,它會根據你所依賴的數據動態顯示新的計算結果
計算屬性將會加入Vue 實例中。所有getter 和setter 的this 上下文自動地綁定為Vue 實例
#透過計算出來的屬性不需要呼叫直接可以在DOM 裡使用
#基礎範例
var vm = new Vue({ el: '#app', data: { message: 'hello' }, template: ` <div> <p>我是原始值: "{{ message }}"</p> <p>我是计算属性的值: "{{ computedMessage}}"</p> // computed 在 DOM 里直接使用不需要调用 </div> `, computed: { // 计算属性的 getter computedMessage: function () { // `this` 指向 vm 实例 return this.message.split('').reverse().join('') } } })
結果:
我是原始值: "Hello"
我是計算屬性的值: "olleH"
如果不使用計算屬性,那麼message.split('').reverse().join('') 就會直接寫到template 裡,那麼在模版中放入太多聲明式的邏輯會讓模板本身過重,尤其當在頁面中使用大量複雜的邏輯表達式處理資料時,會對頁面的可維護性造成很大的影響
而且計算屬性如果依賴不變的話,它就會變成緩存,computed 的值就不會重新計算
所以,如果資料要透過複雜邏輯來得出結果,那麼就建議使用計算屬性
watch
一個對象,鍵是data 對應的數據,值是對應的回呼函數。值也可以是方法名,或包含選項的對象,當data 的資料改變時,就會發生一個回調,他有兩個參數,一個val (修改後的data 資料),一個oldVal(原來的data 數據)
Vue 實例將會在實例化時呼叫$watch()
,遍歷watch 物件的每一個屬性
基礎範例##
new Vue({ data: { n: 0, obj: { a: "a" } }, template: ` <div> <button>n+1</button> <button>obj.a + 'hi'</button> <button>obj = 新对象</button> </div> `, watch: { n() { console.log("n 变了"); }, obj:{ handler: function (val, oldVal) { console.log("obj 变了") }, deep: true // 该属性设定在任何被侦听的对象的 property 改变时都要执行 handler 的回调,不论其被嵌套多深 }, "obj.a":{ handler: function (val, oldVal) { console.log("obj.a 变了") }, immediate: true // 该属性设定该回调将会在侦听开始之后被立即调用 } } }).$mount("#app");注意:
不應該使用箭頭函數來定義watcher 函數,因為箭頭函數沒有this,它的this 會繼承它的父級函數,但是它的父級函數是window,導致箭頭函數的this 指向window,而不是Vue 實例
- ##deep 控制是否要看這個物件裡面的屬性變化
- immediate 控制是否在第一次渲染是執行這個函數
的用法和watch 回呼類似
vm.$watch(' data屬性名稱', fn, {deep: .., immediate: ..})vm.$watch("n", function(val, newVal){ console.log("n 变了"); },{deep: true, immediate: true})
計算屬性vs 屬性偵測
計算屬性(computed) | 屬性偵測( watch) |
首次不執行 | ##呼叫時需要在範本中渲染,修改計算所依賴元資料 |
#預設深度依賴 | |
#適合做篩選,不可異步 | |
相關推薦:
! !程式設計教學
2020年前端vue面試題大匯總(附答案)
以上是vue計算屬性和watch的差別有哪些?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Netflix在框架選擇上主要考慮性能、可擴展性、開發效率、生態系統、技術債務和維護成本。 1.性能與可擴展性:選擇Java和SpringBoot以高效處理海量數據和高並發請求。 2.開發效率與生態系統:使用React提升前端開發效率,利用其豐富的生態系統。 3.技術債務與維護成本:選擇Node.js構建微服務,降低維護成本和技術債務。

Netflix主要使用React作為前端框架,輔以Vue用於特定功能。 1)React的組件化和虛擬DOM提升了Netflix應用的性能和開發效率。 2)Vue在Netflix的內部工具和小型項目中應用,其靈活性和易用性是關鍵。

Vue.js是一種漸進式JavaScript框架,適用於構建複雜的用戶界面。 1)其核心概念包括響應式數據、組件化和虛擬DOM。 2)實際應用中,可以通過構建Todo應用和集成VueRouter來展示其功能。 3)調試時,建議使用VueDevtools和console.log。 4)性能優化可通過v-if/v-show、列表渲染優化和異步加載組件等實現。

Vue.js適合小型到中型項目,而React更適用於大型、複雜應用。 1.Vue.js的響應式系統通過依賴追踪自動更新DOM,易於管理數據變化。 2.React採用單向數據流,數據從父組件流向子組件,提供明確的數據流向和易於調試的結構。

Vue.js適合中小型項目和快速迭代,React適用於大型複雜應用。 1)Vue.js易於上手,適用於團隊經驗不足或項目規模較小的情況。 2)React的生態系統更豐富,適合有高性能需求和復雜功能需求的項目。

實現 Vue 中 a 標籤跳轉的方法包括:HTML 模板中使用 a 標籤指定 href 屬性。使用 Vue 路由的 router-link 組件。使用 JavaScript 的 this.$router.push() 方法。可通過 query 參數傳遞參數,並在 router 選項中配置路由以進行動態跳轉。

Vue 中實現組件跳轉有以下方法:使用 router-link 和 <router-view> 組件進行超鏈接跳轉,指定 :to 屬性為目標路徑。直接使用 <router-view> 組件顯示當前路由渲染的組件。使用 router.push() 和 router.replace() 方法進行程序化導航,前者保存歷史記錄,後者替換當前路由不留記錄。

Vue 中 div 元素跳轉的方法有兩種:使用 Vue Router,添加 router-link 組件。添加 @click 事件監聽器,調用 this.$router.push() 方法跳轉。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

禪工作室 13.0.1
強大的PHP整合開發環境

WebStorm Mac版
好用的JavaScript開發工具