Vue3中的readonly特性及函数使用方法是什么


这篇文章主要讲解了“Vue3中的readonly特性及函数使用方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue3中的readonly特性及函数使用方法是什么”吧!

Vue3 中的 readonly 特性详解

readonly是Vue3中提供的一个新特性,用于将一个响应式对象变成只读对象。使用readonly可以确保一个对象只能被读取而不能被修改,从而提高应用的稳定性和安全性。

在Vue3中,可以使用readonly函数将一个对象转换为只读对象,例如:

import{readonly}from'vue'conststate=readonly({count:0})

在上面的代码中,state对象被转换为只读对象,这意味着state.count属性只能被读取,而不能被修改。

需要注意的是,readonly函数是递归的,也就是说,如果一个对象包含其他对象,那么这些对象也会被转换为只读对象。例如:

import{readonly}from'vue'conststate=readonly({user:{name:'John',age:30}})

在上面的代码中,user对象也被转换为只读对象,这意味着state.user.namestate.user.age属性都只能被读取,而不能被修改。

需要注意的是,readonly函数只能将一个对象转换为只读对象,而不能将一个数组或Map等其他类型的数据结构转换为只读对象。如果需要将这些数据结构转换为只读对象,可以使用readonly函数和deepReadonly函数的组合。例如:

import{readonly,deepReadonly}from'vue'conststate=readonly({items:deepReadonly([{id:1,name:'item1'},{id:2,name:'item2'},{id:3,name:'item3'}])})

在上面的代码中,items数组被转换为只读数组,其中的对象也被转换为只读对象,这意味着数组和对象都只能被读取,而不能被修改。

补充:vue3中的readonly单向数据流函数(readonly函数使用详解)

undefined

vue3中的readonly单向数据流函数,传入一个对象(响应式或普通)或 ref,返回一个原始对象的只读代理。一个只读的代理是“深层的”,对象内部任何嵌套的属性也都是只读的。

一、注意:

1、readonly函数是将通过ref 或reactive定义好的数据进行拷贝后变为仅可读的数据,不可进行修改,即无响应

2、如强制修改 控制台将会报错警告

二、reactive 和 readonly

<template><div><imgalt="Vuelogo"src="./assets/logo.png"/><h2>vue3.0beta</h2><h2>{{original.count}}-----{{copy.count}}</h2><button@click="add">add</button></div></template><script>import{reactive,readonly,watchEffect}from"vue";exportdefault{setup(){constoriginal=reactive({count:0});constcopy=readonly(original);watchEffect(()=>{//依赖追踪console.log(copy.count);});//original上的修改会触发copy上的侦听original.count++;//无法修改copy并会被警告copy.count++;//warning!return{original,copy};}};</script>

可以看到触发了只2次 "watchEffect" 函数,因为 copy 是只读的。

三、ref 和 readonly

<template><div><imgalt="Vuelogo"src="./assets/logo.png"/><h2>vue3.0beta</h2><h2>{{refData}}-----{{copy}}</h2></div></template><script>import{ref,readonly}from"vue";exportdefault{setup(){constrefData=ref(0);constcopy=readonly(refData);//无法修改copy并会被警告copy.value++;//warning!return{refData,copy};}};</script>

可以看到控制台提示如下:

"Set operation on key "value" failed: target is readonly"

四、Object普通对象 和 readonly

<template><div><imgalt="Vuelogo"src="./assets/logo.png"/><h2>vue3.0beta</h2><h2>{{original.count}}-----{{copy.count}}</h2><button@click="add">add</button></div></template><script>import{readonly,watchEffect}from"vue";exportdefault{setup(){constoriginal={count:0};constcopy=readonly(original);watchEffect(()=>{//依赖追踪console.log(copy.count);});//original上的修改会触发copy上的侦听original.count++;//无法修改copy并会被警告copy.count++;//warning!constadd=()=>{copy.count++;};return{original,copy,add};}};</script>

可以看到我们一直点击按钮在++操作,控制台会提示错误,然后界面也没更新,因为你的数据源不是响应式的。

感谢各位的阅读,以上就是“Vue3中的readonly特性及函数使用方法是什么”的内容了,经过本文的学习后,相信大家对Vue3中的readonly特性及函数使用方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是主机评测网,小编将为大家推送更多相关知识点的文章,欢迎关注!


上一篇:Java?Morris遍历算法及在二叉树中应用的方法是什么

下一篇:Java怎么实现基于UDP协议的网络通信UDP编程


Copyright © 2002-2019 测速网 www.inhv.cn 皖ICP备2023010105号
测速城市 测速地区 测速街道 网速测试城市 网速测试地区 网速测试街道
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!

热门搜索 城市网站建设 地区网站制作 街道网页设计 大写数字 热点城市 热点地区 热点街道 热点时间 房贷计算器