vue3中toRef创建一个ref对象

· 为源响应式对象上的某个属性创建一个 ref对象, 二者内部操作的是同一个数据值, 更新时二者是同步的

· 区别ref: 拷贝了一份新的数据值单独操作, 更新时相互不影响

· 应用: 当要将 某个prop 的 ref 传递给复合函数时,toRef 很有用

父组件代码:

<template><div style="font-size: 14px;"><p>{{state}}</p><p>{{fooRef}}</p><p>{{foo}}</p><button @click="foo += '==='">父组件更新</button><Child :foo="foo"/></div>
</template><script lang="ts">
/*
toRef:为源响应式对象上的某个属性创建一个 ref对象, 二者内部操作的是同一个数据值, 更新时二者是同步的区别ref: 拷贝了一份新的数据值单独操作, 更新时相互不影响应用: 当要将 某个prop 的 ref 传递给复合函数时,toRef 很有用
*/
import {defineComponent,reactive,toRef,ref,
} from 'vue'
import Child from './child.vue'
// vue3.0 版本语法
export default defineComponent({components: {Child},setup () {const state = reactive({foo: 1,bar: 2})// fooRef的value与state中的foo是关联的const fooRef = toRef(state, 'foo')setTimeout(() => {// 改变了state.foo的值fooRef.value++console.log('state.foo:',state.foo) // 2// 改变了fooRef.value的值state.foo++console.log('fooRef.value:',fooRef.value) // 3}, 2000)const foo = ref('xxx')return {state,fooRef,foo}}
})
</script>

子组件代码:

<template><h3>子组件:</h3><h3>foo:{{foo}}</h3><h3>fooRef:{{fooRef}}</h3><h3>length:{{length}}</h3><button @click="update">更新</button>
</template><script lang="ts">
import {computed,defineComponent,Ref,toRef
} from 'vue'
// vue3.0 版本语法
export default defineComponent({name: 'Child',props: {foo: {type: String,required: true}},mounted () {console.log('this',this, this.foo)},setup (props) {function useFoo(fooRef: Ref) {const length = computed(() => {return fooRef.value.length})return {length}}console.log('props>', props)const fooRef = toRef(props, 'foo')console.log('fooRef', fooRef)const update = () => {// 无法为“foo”赋值,因为它是只读属性props.foo += '----' // [Vue warn] Set operation on key "foo" failed: target is readonly. }const {length} = useFoo(toRef(props, 'foo'))return {fooRef,update,length}}
})
</script>

初始页面效果:

3秒后页面效果:

点击父组件更新按钮:

点击更新按钮:

无法为“foo”赋值,因为它是只读属性

props.foo += '----'

[Vue warn] Set operation on key "foo" failed: target is readonly.

欢迎关注我的原创文章:小伙伴们!我是一名热衷于前端开发的作者,致力于分享我的知识和经验,帮助其他学习前端的小伙伴们。在我的文章中,你将会找到大量关于前端开发的精彩内容。

学习前端技术是现代互联网时代中非常重要的一项技能。无论你是想成为一名专业的前端工程师,还是仅仅对前端开发感兴趣,我的文章将能为你提供宝贵的指导和知识。

在我的文章中,你将会学到如何使用HTML、CSS和JavaScript创建精美的网页。我将深入讲解每个语言的基础知识,并提供一些实用技巧和最佳实践。无论你是初学者还是有一定经验的开发者,我的文章都能够满足你的学习需求。

此外,我还会分享一些关于前端开发的最新动态和行业趋势。互联网技术在不断发展,新的框架和工具层出不穷。通过我的文章,你将会了解到最新的前端技术趋势,并了解如何应对这些变化。

我深知学习前端不易,因此我将尽力以简洁明了的方式解释复杂的概念,并提供一些易于理解的实例和案例。我希望我的文章能够帮助你更快地理解前端开发,并提升你的技能。

如果你想了解更多关于前端开发的内容,不妨关注我的原创文章。我会不定期更新,为你带来最新的前端技术和知识。感谢你的关注和支持,我们一起探讨交流技术共同进步,期待与你一同探索前端开发的奇妙世界!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/178011.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

搜索的剪枝

1.可行性剪枝:如果继续搜下去已经不能得到答案,就return 2.排除等效冗余:在搜索的几个分支中具有完全相同的效果时,选择其中一个走即可 3.最优性剪枝:如果题目要求是最大&#xff0c;最小之类的,没搜到一个解&#xff0c;和之前的解作对比&#xff0c;如果不如之前搜到的&…

js 深度学习(八)

原型及原型链 prototype是function对象的一个属性 它也是一个对象 prototype是定义构造函数构造出的每个对象的公共祖先 所以被该构造函数构造出来的对象 都可以继承原型上的属性和方法 自己有的属性不会去原型上找 方法写在原型上 属性写在构造函数内部 __proto__是实例化以后…

关于easy-es的聚合问题-已解决

es实体类&#xff1a; public class ChemicalES {IndexId(type IdType.CUSTOMIZE)private Long id;HighLightIndexField(fieldType FieldType.TEXT, analyzer "ik_max_word")private String name;IndexField(fieldType FieldType.KEYWORD)private List<Stri…

nginx 配置跨域(小皮面板)

本地开发的时候&#xff0c;前端请求后端&#xff0c;后端不能用域名请求&#xff0c;只能用端口模式&#xff0c;在小皮面板的话就是如下配置&#xff1a; 我的测试项目部署&#xff1a; 前端&#xff1a;http://localhost:8082 后端&#xff1a;http://localhost:8081 前端…

二百零八、Hive——HiveSQL异常:Select查询数据正常,但SQL语句加上group by查询数据为空

一、目的 在HiveSQL的DWD层中&#xff0c;需要对原始数据进行去重在内的清洗&#xff0c;结果一开始其他数据类型的清洗工作都正常&#xff0c;直到碰到转向比数据。 一般的SQL查询有数据&#xff0c;但是加上group by以后就没数据&#xff1b; 一般的SQL查询有数据&#xf…

Python实现WOA智能鲸鱼优化算法优化XGBoost分类模型(XGBClassifier算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 鲸鱼优化算法 (whale optimization algorithm,WOA)是 2016 年由澳大利亚格里菲斯大学的Mirjalili 等提…

uniapp基础-教程之HBuilderX基础常识篇02

uniapp创建项目时属性多为vue后缀&#xff1b;其中每个文件中都包含了三段式结构分别是template&#xff1b;script&#xff1b;style形势&#xff0c;分别是前端显示的画面以及js和css样式。 template&#xff1a;说大白话就是给别人看的&#xff0c;我们打开页面就可以看到的…

商城系统通过Kafka消息队列,实现订单的处理和状态更新springboot例子解决并发处理、数据一致性等问题

在商城系统中&#xff0c;订单的处理和状态更新是非常关键的部分&#xff0c;需要保证并发处理和数据一致性。使用Kafka消息队列可以很好地解决这些问题。 下面是一个使用Kafka消息队列实现订单处理和状态更新的Spring Boot例子&#xff1a; 1. 添加Kafka依赖 在pom.xml文件…

Jtti:linux中udp怎么判断是否接收到数据?

在Linux中&#xff0c;使用UDP协议进行通信时&#xff0c;可以通过检查套接字(Socket)接收缓冲区中是否有数据来判断是否接收到数据。以下是一个简单的方法&#xff1a; #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/ine…

oracle查询开始时间和结束时间之间的连续月份

SELECT TO_CHAR(ADD_MONTHS(TO_DATE(2023-01,YYYY-MM), ROWNUM - 1), YYYY-MM) AS fmonth FROM DUALCONNECT BY ROWNUM < CEIL(MONTHS_BETWEEN(TO_DATE(2023-11, YYYY-MM), TO_DATE(2023-01,YYYY-MM))1)

附录11-math.h的常见方法

stdlib.h是做数学计算的头文件 目录 1 数学知识 1.1 弧度值/π 角度值/180 1.2 双曲函数 2 math.h 2.1 反余弦值 acos() 2.2 反正弦值 asin() 2.3 反正切值 atan() 2.4 两个数的反正切值 atan2() 2.5 向上取整 ceil() 2.6 余弦值 cos() 2.7 双曲余弦 c…

c++环形队列

c环形队列 c环形队列 c环形队列 #pragma once#include <iostream> #include <vector>/// <summary> /// - 环形队列 /// - 不是线程安全 /// </summary> /// <typeparam name"T"></typeparam> template <typename T> cla…

应用在触摸式面板中的电容式触摸芯片

触摸屏又称为“触控屏”、“触控面板”&#xff0c;是一种可接收触头等输入讯号的感应式液晶显示装置&#xff1b;当接触了屏幕上的图形按钮时&#xff0c;屏幕上的触觉反馈系统可根据预先编程的程式驱动各种连结装置&#xff0c;可用以取代机械式的按钮面板&#xff0c;并借由…

2947. 统计美丽子字符串 I (前缀和)

Problem: 2947. 统计美丽子字符串 I 文章目录 题目思路Code 题目 给你一个字符串 s 和一个正整数 k 。 用 vowels 和 consonants 分别表示字符串中元音字母和辅音字母的数量。 如果某个字符串满足以下条件&#xff0c;则称其为 美丽字符串 &#xff1a; vowels consonants…

【JavaEE初阶】 HTTP协议和使用Fiddler抓包

文章目录 &#x1f38d;HTTP协议是什么&#xff1f;&#x1f340;应用层协议&#xff08;HTTP&#xff09;存在的意义&#x1f384;HTTP 协议的工作过程&#x1f334;HTTP 协议格式&#x1f333;Fiddler抓包工具的使用&#x1f6a9;如何抓HTTPS的包&#xff1f; &#x1f38b;抓…

npm私仓 verdaccio搭建 发布到私仓 使用

1.安装verdaccio # 全局安装 npm install -g verdaccio npm list -g verdaccio //查看verdaccio版本 2. 修改配置文件 vim /root/.config/verdaccio/config.yaml # 修改页面标题 web: title: CloudWise-Verdaccio # 上传npm包大小限制修改 max_body_size: 100mb # 允许…

Vue 文件压缩与解压缩

Vue 文件压缩与解压缩 文章目录 Vue 文件压缩与解压缩0. 安装1. 压缩2. 解压 0. 安装 安装 npm install jszip引入 import JSZip from jszip;使用 1. 压缩 async compressFiles() {// 创建jszip实例const zip new JSZip();// 添加需要压缩的文件const file1 Hello World…

flutter开发实战-当前界面无操作60s返回主页实现

flutter开发实战-当前界面无操作60s返回主页实现 当前界面无操作60s返回主页实现&#xff0c;主要是通过Timer来控制&#xff0c;当监听界面是否有pointerDown时候&#xff0c;如果超过60s仍没有操作&#xff0c;则返回主页。 一、Listener Listener是用来用于调用回调以响应…

【LeetCode周赛】LeetCode第373场周赛

LeetCode第373场周赛 目录 循环移位后的矩阵相似检查统计美丽子字符串 I交换得到字典序最小的数组统计美丽子字符串 II 循环移位后的矩阵相似检查 循环移位后的矩阵相似检查 分析&#xff1a; 简单模拟 这道题目就是一个简单的模拟题&#xff0c;直接按照题目意思进行判断即可…