vue3中markRaw示例詳解
在 Vue 3 中,markRaw
是一個用于告訴 Vue 的響應(yīng)性系統(tǒng)不要對某個對象進行轉(zhuǎn)換或追蹤其響應(yīng)性的函數(shù)。當你有一個對象,并且你確定你不需要它成為響應(yīng)性對象時,你可以使用 markRaw
來標記它。這在一些場景中非常有用,比如當你需要集成一個第三方庫或插件,并且這個庫或插件的某些部分不需要是響應(yīng)性的。
下面是一個詳細的示例,展示了如何在 Vue 3 中使用 markRaw
:
import { reactive, markRaw, toRefs } from 'vue'; // 創(chuàng)建一個普通的 JavaScript 對象 const rawObject = { name: 'Raw Object', value: 'This is a raw object and it will not be reactive.' }; // 使用 markRaw 標記這個對象,使其保持原樣 const markedRawObject = markRaw(rawObject); // 創(chuàng)建一個響應(yīng)性對象 const state = reactive({ // 將標記過的 rawObject 放入響應(yīng)性對象中 markedRawObject, // 另一個普通的對象,它會被轉(zhuǎn)換為響應(yīng)性對象 reactiveObject: { name: 'Reactive Object', value: 'This is a reactive object and it will track changes.' } }); // 在組件中使用這些對象 export default { setup() { // 使用 toRefs 來解構(gòu)響應(yīng)性對象的屬性,以便在模板中直接使用 const { markedRawObject, reactiveObject } = toRefs(state); // 由于 markedRawObject 是被 markRaw 標記過的,修改它不會觸發(fā) Vue 的響應(yīng)性系統(tǒng) markedRawObject.value.name = 'Modified Raw Object'; // 這不會觸發(fā)更新 // 修改 reactiveObject 則會觸發(fā) Vue 的響應(yīng)性更新 reactiveObject.value.name = 'Modified Reactive Object'; // 這會觸發(fā)更新 // 返回這些屬性,以便在模板中使用 return { markedRawObject, reactiveObject }; } };
在上面的代碼中,我們創(chuàng)建了一個普通的 JavaScript 對象 rawObject
,并使用 markRaw
函數(shù)將其標記為原樣對象。然后,我們將這個標記過的對象放入一個響應(yīng)性對象 state
中。在組件的 setup
函數(shù)中,我們解構(gòu)出 markedRawObject
和 reactiveObject
,并嘗試修改它們的屬性。由于 markedRawObject
是被 markRaw
標記過的,所以修改它的屬性不會觸發(fā) Vue 的響應(yīng)性系統(tǒng)。而修改 reactiveObject
的屬性則會觸發(fā)響應(yīng)性更新。
在模板中,你可以像這樣使用這些屬性:
<template> <div> <p>Marked Raw Object: {{ markedRawObject.name }} - {{ markedRawObject.value }}</p> <p>Reactive Object: {{ reactiveObject.name }} - {{ reactiveObject.value }}</p> </div> </template>
請注意,即使 markedRawObject
的屬性在模板中顯示出來了,但由于它是原樣對象,所以對其屬性的修改不會觸發(fā)視圖的更新。而 reactiveObject
的屬性修改則會觸發(fā)視圖的更新。
markRaw
的主要用途是當你確定某個對象不需要響應(yīng)性時,避免不必要的性能開銷和潛在的錯誤。這在處理第三方庫、大型數(shù)據(jù)對象或性能敏感的場景中特別有用。
到此這篇關(guān)于vue3中markRaw示例詳解的文章就介紹到這了,更多相關(guān)vue3 markRaw內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在vue中實現(xiàn)給每個頁面頂部設(shè)置title
這篇文章主要介紹了在vue中實現(xiàn)給每個頁面頂部設(shè)置title,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07