官方文档
<template>
<h2>toRaw markRaw</h2>
<h3>state:{{state}}</h3>
<button @click="testToRaw">测试toRaw</button>
<button @click="testToMarkRaw">测试markRaw</button>
</template>
<script lang="ts">
import { defineComponent, markRaw, reactive, toRaw } from 'vue'
interface UserInfo {
name: string
age: number
likes?: string[]
}
export default defineComponent({
setup() {
const state = reactive<UserInfo>({
name: '小明',
age: 20,
})
const testToRaw = () => {
const user = toRaw(state)
user.name += '='
console.log('测试')
}
const testToMarkRaw = () => {
const likes = ['chi', 'he']
state.likes = markRaw(likes)
setInterval(() => {
if (state.likes) {
state.likes[0] += '='
console.log('tick')
}
}, 1000)
}
return { state, testToRaw, testToMarkRaw }
},
})
</script>