* readonly 函数
* 深度只读数据。
* 获取一个对象 (响应式或纯对象) 或 ref 并返回原始代理的只读代理。
* 只读代理是深层的:访问的任何嵌套 property 也是只读的。
* shallowReadonly 函数
* 浅只读数据,只能使对象的第一层是只读的,第2层及更深层不是只读的。
* 创建一个代理,使其自身的 property 为只读,但不执行嵌套对象的深度只读转换。
* 应用场景:
* 在某些特定情况下,我们可能不希望对数据进行更新的操作,那就可以包装生成一个只读代理对象来读取数据,而不能修改或删除。
```html
<template>
<!-- 4. 模板引用state -->
<h3>state: {{ state }}</h3>
<hr />
<button @click="update">更新</button>
</template>
<script lang="ts">
import { defineComponent, reactive, readonly, shallowReadonly } from "vue";
export default defineComponent({
setup() {
//1. 创建一个响应式的对象
const state = reactive({
name: "张三",
age: 20,
car: {
name: "奔驰",
price: 100,
},
});
//2. 将state分别传入readonly和shallowReadonly
//const readonely01 = readonly(state)
const shallowReadonly01 = shallowReadonly(state);
//3. 更新情况
const update = () => {
//深度只读,不能更新
//readonely01.age += 10
//readonely01.car.price += 10
//第1层的不能更改,更改失败
//shallowReadonly01.age += 10
//浅度只读,可以更改第2层及其更深层的数据
shallowReadonly01.car.price += 100;
};
return {
state,
update,
};
},
});
</script>
```
![](https://img.kancloud.cn/44/12/44129915d80b7850ec33b664e9e7bcd8_1344x145.gif)
- nodejs
- 同时安装多个node版本
- Vue3
- 创建Vue3项目
- 使用 vue-cli 创建
- 使用 vite 创建
- 常用的Composition API
- setup
- ref
- reactive
- 响应数据原理
- setup细节
- reactive与ref细节
- 计算属性与监视
- 生命周期函数
- toRefs
- 其它的Composition API
- shallowReactive与shallowRef
- readonly与shallowReadonly
- toRaw与markRaw
- toRef
- customRef
- provide与inject
- 响应式数据的判断
- 组件
- Fragment片断
- Teleport瞬移
- Suspense
- ES6
- Promise对象
- Promise作用
- 状态与过程
- 基本使用
- 常用API
- async与await
- Axios