vue watch props无效

背景


如标题所示,是因为vue watch props无效才看到这篇文章的。网上有一堆讲这个问题的解决办法。比如:watch(() => props.val1, (newValue) => {...})。但是我用Vue3.3.4尝试后,也是没有成功。可能是因为props.val1是一个Ref的问题吧,具体也没研究。
但是我这边是这样一个场景,所以需要用watch监测props的变化。
我有一个A.vue,需要通过props传给B.vue。而B.vue使用这个props构建一个ref,用于展示界面。我希望在A.vue中更改传递给B的props的值,以达到B.vue更改界面的需求。但是有一个问题,ref只在onMounted的时候,初始化一次,后面不管怎样改动props,这个ref都不会改变。所以才使用watch监测props的变化,进而重新赋值给ref。但是我没成功。
那好,那我就在B.vue中通过defineExpose导出一个函数比如reset(),专门用于给ref重新赋值给props,比如

const props = defineProps({propsVal: String
})
const valRef = ref(props.propsVal)function reset() {valRef.value = props.propsVal
}
defineExpose({reset,	// 导出后,A.vue中可以调用B.vue中的reset方法
})

这样A.vue中,更改props的传入值后,调用一下B.vue的reset()就可以了。
但是这个方法,很麻烦,有时候也会出现reset() function is not define.的错误提示。

解决方案


使用计算属性computed,而不是引用ref
因为计算属性也具有响应性,也能过引起界面的更改。而且props的更改,能反映到computed属性的更改。更改一下上面的例子:

const props = defineProps({propsVal: String
})
const valComputed = computed(props.propsVal)<tempate><p> {{ valComputed }} </p>
</tempate>

补充


  1. 传给props的必须是一个简单类型(比如boolean、number)或者是响应式对象(比如reactive({}))。

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

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

相关文章

排序-归并排序与计数排序

文章目录 一、归并排序1、概念2、过程3、代码实现4、复杂度5、稳定性 二、 计数排序1、思路2、代码实现3、复杂度&#xff1a;4、稳定性 一、归并排序 1、概念 是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已…

关键点检测☞png格式换bmp,且labelme标注的json中imagePath同步修改格式

import os import cv2 import jsondef bmp2jpg(in_img_path, out_dir_name): # .png -> .bmp# img = cv2.imread(in_img_path) # 彩色图片,位深24img =</

GDPU 数据结构 天码行空13

文章目录 一、【实验目的】二、【实验内容】三、实验源代码四、实验结果五、实验总结 一、【实验目的】 (1) 理解插入排序算法的实现过程&#xff1b; &#xff08;2&#xff09;理解不同排序算法的时间复杂度及适用环境&#xff1b; &#xff08;3&#xff09;了解算法性能…

Win11 跑通tensorRT

准备 1.安装cuda&#xff0c;成功之后文件夹如下图所示 2.下载cudnn&#xff0c;把cudnn对应的文件放在cuda里面 3.安装vs 4.安装对应cuda版本的tensorRT https://developer.nvidia.com/tensorrt-download 5.opencv安装 编译好 打开vs&#xff0c;配置环境 用vs打开tens…

PLC-Recorder V3版本软件升级方法

PLC-Recorder V3软件进行了架构优化&#xff0c;包括采集服务器、客户端、授权管理等组件。升级方法与V2版本相似&#xff0c;但是也有一些变化&#xff0c;说明如下&#xff1a; 一、从V2向V3版本升级 1、退出原PLCRecorder&#xff1a;关闭右下角的图标。 2、退出打开的离线…

模型部署系列:10x速度提升,Yolov8检测模型稀疏化——CPU上超500FPS

YOLOv8由广受欢迎的YOLOv3和YOLOv5模型的作者 Ultralytics 开发&#xff0c;凭借其无锚设计将目标检测提升到了一个新的水平。YOLOv8 专为实际部署而设计&#xff0c;重点关注速度、延迟和经济性。 [1] 详细内容请参阅 MarkAI Blog [2] 更多资料及工程项目请关注 MarkAI Githu…

2023年【A特种设备相关管理(锅炉压力容器压力管道)】考试题及A特种设备相关管理(锅炉压力容器压力管道)考试内容

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 A特种设备相关管理&#xff08;锅炉压力容器压力管道&#xff09;考试题是安全生产模拟考试一点通总题库中生成的一套A特种设备相关管理&#xff08;锅炉压力容器压力管道&#xff09;考试内容&#xff0c;安全生产模…

DockerCompose部署RabbitMQ集群

DockerCompose部署RabbitMQ集群 最近小黄在工作中正好需要部署RabbitMQ集群&#xff0c;借此来记录一下&#xff0c;也希望可以帮助到大家 前置条件 简单介绍一下咱们公司现有的条件以及想要达成的效果 服务器3台&#xff0c;3台都是属于一个专有网络中&#xff0c;也就是说3…

P1009 [NOIP1998 普及组] 阶乘之和

复制Markdown 展开 题目描述 用高精度计算出 &#xfffd; 1 ! 2 ! 3 ! ⋯ &#xfffd; ! S1!2!3!⋯n!&#xff08; &#xfffd; ≤ 50 n≤50&#xff09;。 其中 ! 表示阶乘&#xff0c;定义为 &#xfffd; ! &#xfffd; ( &#xfffd; − 1 ) ( &#xfff…

Java集合中的通用算法,开发效率翻倍

引言 Java在日常工作中用的非常多&#xff0c;每天日复一日的增删改查&#xff0c;集合作为最常见的数据结构为我们处理数据提供了很大的方便&#xff0c;集合中有一些常见的算法&#xff0c;比如&#xff1a;排序&#xff0c;二分查找&#xff0c;洗牌算法等等&#xff0c;本…

【开源】基于JAVA的桃花峪滑雪场租赁系统

项目编号&#xff1a; S 036 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S036&#xff0c;文末获取源码。} 项目编号&#xff1a;S036&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 游客服务2.2 雪场管理 三、数据库设…

关于“Python”的核心知识点整理大全19

目录 ​编辑 8.6.4 使用 as 给模块指定别名 8.6.5 导入模块中的所有函数 8.7 函数编写指南 8.8 小结 第9章 类 9.1 创建和使用类 9.1.1 创建 Dog 类 dog.py 1. 方法__init__() 2. 在Python 2.7中创建类 9.1.2 根据类创建实例 1. 访问属性 2. 调用方法 3. 创建多…

快速搭建知识付费平台?我有才,为你提供一站式解决方案

在当今数字化时代&#xff0c;知识付费已经成为一种趋势&#xff0c;越来越多的人愿意为有价值的知识付费。然而&#xff0c;公共知识付费平台虽然内容丰富&#xff0c;但难以满足个人或企业个性化的需求和品牌打造。同时&#xff0c;开发和维护一个属于自己的知识付费平台需要…

一篇文章读懂Jenkins的发展历程

Jenkins是一款开源的持续集成&#xff08;Continuous Integration&#xff09;工具&#xff0c;它的发展历程可以追溯到2004年&#xff0c;以下是Jenkins的发展历程&#xff1a; 起源 Jenkins起源于Hudson项目&#xff0c;Hudson是一个持续集成工具&#xff0c;由日本的一家公…

耗时8个月,独立开发者发布:eTab新标签页

eTab是一款专注互联网开发者的浏览器起始页&#xff0c;高颜值、个性化、小组件、自由化布局、高质量行业文章&#xff0c;永久无广告。eTab让你在高效工作之余&#xff0c;发现更多有价值的内容&#xff01; 让你在高效工作之余&#xff0c;发现更多有价值的内容&#xff01; …

Oracle md5

SQL CREATE OR REPLACE FUNCTION MD5(passwd IN VARCHAR2) RETURN VARCHAR2 ISretval varchar2(32); BEGINretval : utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING > passwd));RETURN retval; END; 测试 select md5(lw112190) from dual 效果

70套大数据可视化大屏模板,总有一款适合你(含演示示例)

分享70款还不错的前端数据可视化大屏源码 其中包含行业&#xff1a;智慧社区、智慧物业、政务系统、智慧交通、智慧工程、智慧医疗、智慧金融银行等&#xff0c;全网最新、最多&#xff0c;最全、最酷、最炫大数据可视化模板。 你可以点击预览获取查看该源码资源的最终展示效果…

三、JS逆向

一、JS逆向 解释&#xff1a;在我们爬虫的过程中经常会遇到参数被加密的情况&#xff0c;这样只有先在前端搞清楚加密参数是怎么生成的才能继续我们的爬虫&#xff0c;而且此时我们还需要用python去执行这个加密的过程。本文主要讲怎么在浏览器调试JS&#xff0c;以及Python执…

基于ssm企业人事管理系统的设计与实现论文

摘 要 进入信息时代以来&#xff0c;很多数据都需要配套软件协助处理&#xff0c;这样可以解决传统方式带来的管理困扰。比如耗时长&#xff0c;成本高&#xff0c;维护数据困难&#xff0c;数据易丢失等缺点。本次使用数据库工具MySQL和编程技术SSM开发的企业人事管理系统&am…

从 “template1“ is being accessed 报错,看PG数据库的创建过程

一、 问题背景 创建db时遇到以下报错&#xff1a; postgres# create database pgdb; ERROR: source database "template1" is being accessed by other users DETAIL: There is 1 other session using the database. 其实解决方法是比较简单的&#xff0c;查询谁…