Vue3快速入门-readonly 与 shallowReadonly

本文详细介绍了Vue中的`readonly`和`shallowReadonly`两个功能,它们用于创建对象的只读代理。`readonly`使整个对象包括所有层级的属性变为只读,而`shallowReadonly`只对对象的第一层属性进行保护。通过示例代码展示了尝试修改只读数据时会引发的错误,并解释了两者在深层属性修改上的区别。
摘要由CSDN通过智能技术生成

查看本系列文章合集click me

下载本系列文章源码click me



readonly

  • 深度只读数据
  • 获取一个对象响应式、普通对象或 ref对象 并返回它们的 只读代理对象
  • 访问任何层级属性都是只读的,不能修改。

shallowReadonly

  • 浅只读数据
  • 创建一个代理,只有根层级的属性变为了只读,也就是第一层。
<template>
  <div id="app">
    <h2>readonly: {{ readonlyData }}</h2>
    <h2>shallowReadonly: {{ shallowData }}</h2>

    <button @click="update">更新</button>
  </div>
</template>

<script lang="ts">
import { defineComponent, reactive, readonly, shallowReadonly } from "vue";

export default defineComponent({
  setup() {
    const data = reactive({
      name: "",
      son: {
        name: "",
      },
    });

    const readonlyData = readonly(data);
    const shallowData = shallowReadonly(data);

    function update() {
      // readonlyData.name = "温情";  // 报错:无法分配到 "name" ,因为它是只读属性。
      // readonlyData.son.name = "key";  // 报错:无法分配到 "name" ,因为它是只读属性。

      // shallowData.name = "温情"; // 报错:无法分配到 "name" ,因为它是只读属性。
      shallowData.son.name = "key"; // √
    }

    return {
      readonlyData,
      shallowData,
      update,
    };
  },
});
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

温情key

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值