|
|
@@ -0,0 +1,57 @@
|
|
|
+<template>
|
|
|
+ <div>
|
|
|
+ <h1>toRaw-markRaw</h1>
|
|
|
+ <h3>
|
|
|
+ reactive:{{ person.name }} -- {{ person.age }}
|
|
|
+ </h3>
|
|
|
+ <h3>
|
|
|
+ toRaw:{{ p1.name }} -- {{ p1.age }}
|
|
|
+ <!-- 获取一个响应式对象的原生对象,toRaw返回的对象不再是响应式,不会触发视图的更新 -->
|
|
|
+ </h3>
|
|
|
+ <h3>
|
|
|
+ reactive:{{ obj.name }} -- {{ obj.age }}
|
|
|
+ </h3>
|
|
|
+ <h3>
|
|
|
+ markRaw:{{ o1.name }} -- {{ o1.age }}
|
|
|
+ <!-- 标记一个对象 使其永远不会变成响应式 -->
|
|
|
+ </h3>
|
|
|
+ <button @click="changePerson">修改1</button>
|
|
|
+ <button @click="changeObj">修改2</button>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script lang="ts" setup>
|
|
|
+import {toRaw,reactive, markRaw} from "vue"
|
|
|
+let person = reactive({
|
|
|
+ name:"图图",
|
|
|
+ age: 3
|
|
|
+})
|
|
|
+let p1 = toRaw(person);
|
|
|
+console.log(person)
|
|
|
+console.log(p1)
|
|
|
+function changePerson() {
|
|
|
+ Object.assign(p1,{
|
|
|
+ name: '小美',
|
|
|
+ age: 5
|
|
|
+ })
|
|
|
+}
|
|
|
+let obj = ({
|
|
|
+ name: '哆啦A梦',
|
|
|
+ age: 4
|
|
|
+})
|
|
|
+let o1 = markRaw(obj);
|
|
|
+console.log(obj)
|
|
|
+function changeObj() {
|
|
|
+ // Object.assign(o1,{
|
|
|
+ // name: '机器猫',
|
|
|
+ // age: 6
|
|
|
+ // })
|
|
|
+ o1 = {
|
|
|
+ name: '机器猫',
|
|
|
+ age: 6
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+</style>
|