Vue3之readonly与shallowReadonly

文章目录

  • 简介
  • 代码
    • 代码解释

简介

  • readonly定义一个深度只读的数据
  • shallowReadonly 定义一个浅只读的数据,只有对外层的属性是只读的,内层的属性可以修改

代码

<script setup>
import { reactive, readonly, shallowReadonly } from 'vue';

const person1 = readonly({
    name:"sunWuKong",
    car:{
        name:"DaZhong"
    }
})

let person2 = reactive({
    name:"tangSeng",
    car:{
        name:"BaoMa"
    }
})

person2 = shallowReadonly(person2)

const changePerson1 = () => {
    person1.car.name = "MaiBaHe"
    console.log(person1)
}
const changePerson2 = () => {
    person2.car.name = "BaoJun"
    console.log(person2)
}
script>

<template>
    <h2>person1h2><span>{{person1}}span>
    <h2>person2h2><span>{{person2}}span>
    <button @click="changePerson1">修改person1button>
    <button @click="changePerson2">修改person2button>
template>

代码解释

  1. 当我们点击changePerson1,因为我们修改数据,控制台输出如下Vue3之readonly与shallowReadonly_第1张图片
    • 他会提示呢当前的属性是只读的
    • 相应的对象也无法修改
  2. 当我们点击changePerson2,Vue3之readonly与shallowReadonly_第2张图片
    • 我们会发现页面上的数据改变了
    • 对象中的数据也改变了

你可能感兴趣的:(Vue基础知识,vue.js,javascript,typescript)