vue3 toRaw markRaw

toRaw markRaw理解

理解

toRaw

將一個reactive生成的響應式物件轉回普通物件

markRaw

讓響應式物件裡面的某些屬性不會響應式

<script >
import {  reactive, toRaw, markRaw } from "vue"
export default {
  setup() {
    let person = reactive({
      name: 'jason',
      job: {
        salary: 100 //只有這個能改
      }
    })
    function toRawPerson() {
      //把reactive響應式物件轉回原本的物件
      let p = toRaw(person)
      console.log(p)
    }
    function toMarkRaw() {
      // vue3中對響應式的物件添加新屬性新的屬性也會是響應式使用markRaw可以把不想要響應的物件去掉響應式
      person.test = markRaw({
        name: 'test'
      })
      person.job = markRaw(person.job)
      console.log(person)
    }
    return {
      toRawPerson,
      toMarkRaw,
      person
    }
  }
}
</script>

<template>
  {{ person }}
  <button @click="toRawPerson">toRawPerson</button>
  <button @click="toMarkRaw">markRaw</button>
</template>

markRaw應用場景

有不須修改的未知大數據時可以使用加快性能