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>