Vue3-toRaw 和 markRaw 函数
toRaw(转换为原始):将响应式对象转换为普通对象,只适用于 reactive 生成的响应式对象。 markRaw(标记为原始):标记某个对象,让这个对象永远都不具备响应式。一些集成的第三方库,会有大量的只读列表,不让其具备响应式是一种性能优化。
< template>
< h2> 计数器1 :{ { data. counter1} } < / h2>
< button @click= "data.counter1++" > 计数器加1 < / button> < br>
< button @click= "getRawObject" > data原始对象< / button>
< / template>
< script setup>
import { reactive, toRaw } from 'vue'
let data = reactive ( {
counter1 : 1
} )
function getRawObject ( ) {
let rawObj = toRaw ( data)
rawObj. counter1++
console. log ( '原始对象' , rawObj) ;
}
< / script>
< template>
< h2> 计数器1 :{ { data. x} } < / h2>
< button @click= "data.x.counter1++" > 计数器1 加1 < / button> < br>
< button @click= "addX" > 扩展x属性< / button>
< / template>
< script setup>
import { markRaw, reactive } from 'vue'
let data = reactive ( { } )
function addX ( ) {
data. x = markRaw ( { counter1 : 1 } )
}
< / script>