欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > 【Vue3】shallowReactive() and shallowReadonly()

【Vue3】shallowReactive() and shallowReadonly()

2025/3/25 13:42:41 来源:https://blog.csdn.net/qq_42582773/article/details/139484404  浏览:    关键词:【Vue3】shallowReactive() and shallowReadonly()

历史小剧场

所谓历史,就是过去的事,它的残酷之处在于:无论你哀嚎,悲伤,痛苦,落寞,追悔,它都无法改变。
一具有名的尸体躺在无数无名的尸体上,这就是所谓的霸业。---- 《明朝那些事儿》

shallowReactive

只有根级别的属性是响应式的
看案例

<!-- TestShallow.vue -->
<template><div><p>学号: {{ id }}&nbsp;&nbsp;姓名: {{ info.name }}</p><button @click="id++">点击增加学号</button><button @click="changeName">改变姓名</button></div>
</template><script lang="ts">
import { isReadonly, shallowReactive, shallowReadonly, toRefs } from 'vue';export default {name: 'TestShallow',setup() {type Student = {id: number,info: {name: string,}}const student = shallowReactive<Student>({id: 1,info: {name: '张三'  // 这里的name不是响应式的}})const changeName = () => {student.info.name = '莉丝'console.log("name => ", student.info.name)}return {...toRefs(student),changeName}}
}
</script><style lang="scss" scoped></style>

当我们点击增加学号时,界面上学号+1;
但是,我们点击修改姓名是,只有控制台打印的姓名变了,而界面上却没变。
这就是说明,这里在info里面的属性不是响应式的

shallowReadonly

只有根节点的属性是只读的

 const person = shallowReadonly({name: '新潮',info: {age: 25}})console.log("第一层 => ", isReadonly(person))       // trueconsole.log("第二层 => ", isReadonly(person.info))  // false

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词