Vue中为什么有时候获取不到props?

原因

在Vue中,props是从父组件流向子组件,在子组件的mounted及之前的生命周期钩子中,子组件只能接收到父组件的第一次props,如果父组件的props改变了,那么子组件在以上这些生命周期钩子中是接收不到的,那么最好的解决办法当然就是在子组件中采用watch来侦听peops的变化。

如下有一个案例是我在实际开发中遇到的,记录下来以防再次踩坑

案例

子组件A:

子组件是elementUI中的tree组件,首先通过向后端获取数据来得到tree的数据,然后拿到父组件传递过来的props进行勾选状态回显

const { state } = useAsyncState(() => getAllMenuTree(),{ data: [] },{onSuccess(res) {if (res) {//子组件通过useAsyncState来获取树形数据console.log('props.checkedKeys',props.checkedKeys);//然后拿到父组件传递过来的props,进行setCheckedKeystreeRef.value?.setCheckedKeys(finalKeys);}},},
);

父组件B:

父组件B也使用useAsyncState方法获取数据,然后把数据中需要回显的数据传递给子组件A,
此时props发生了变化

<template><FilterOrCheck  :checkedKeys="checkedKeys" 
</template>
const checkedKeys = ref<string[]>([]);
const { state, execute } = useAsyncState(() => getAuthDetail(paramsQuery.value),{data: {},},{onSuccess(res) {if (res.code === ResDataCodeEnum.SUCC_0) {checkedKeys.value = res.data.menuIds || [];}},},
);

父组件C:

   父组件C和B一样,也是同样的操作

<template><FilterOrCheck  :checkedKeys="checkedKeys" 
</template>
const checkedKeys = ref<string[]>([]);
const { state } = useAsyncState(() => getPosDetail(postId.value),{ data: {} },{onSuccess(res) {checkedKeys.value = res.data.menuIds || [];},},
);

这个案例的结果是在父组件B使用子组件A时,子组件A打印出来的props.checkedKeys是有值的,但是父组件C使用子组件A的时候,子组件打印出来的是一个空数组,这是为何?

原因是因为父组件B和C他们都是在获取数据之后才改变props的,而A组件也是在获取数据之后才打印props的,如果A组件获取数据的时间比较长,那么在A组件获取到数据的时候,父组件已经获取到数据并传递props给A了,所以A打印出来的props是有的,反之就是没有的,所以解决办法就是为了以防万一,再加上一个watch即可

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

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

相关文章

4G模组EC20 网卡udhcpc获取IP但是没有设置IP

使能网卡&#xff1a; ifconfig usb0 up dhcp获取ip&#xff0c;虽然没有报error&#xff0c;但是很显然没有设置进配置 获取ip命令&#xff1a;udhcpc -i usb0 非正常现象&#xff1a; 正常现象&#xff1a; 解决方法&#xff1a; &#xff08;1&#xff09;rootfs 创建文件夹…

RabbitMQ | 在ubuntu中使用apt-get安装高版本RabbitMQ

目录 一、官方脚本 二、彻底卸载 三、重新安装 1.安装高版本Erlang 2.安装RabbitMQ 一、官方脚本 直接使用apt安装的rabbitmq版本较低&#xff0c;甚至可能无法使用死信队列等插件。首先提供一个 官方 的安装脚本&#xff1a; #!/usr/bin/sh sudo apt-get install curl …

lvs-DR模式:

lvs-DR数据包流向分析 客户端发送请求到 Director Server&#xff08;负载均衡器&#xff09;&#xff0c;请求的数据报文&#xff08;源 IP 是 CIP,目标 IP 是 VIP&#xff09;到达内核空间。 Director Server 和 Real Server 在同一个网络中&#xff0c;数据通过二层数据链路…

Vue操作时间

一、获取现在时间 const currentTime () > {let date new Date();let year date.getFullYear(); //月份从0~11&#xff0c;所以加一let month date.getMonth();let dateArr [date.getMonth() 1,date.getDate(),date.getHours(),date.getMinutes(),date.getSeconds(),…

Pytorch-day04-模型构建-checkpoint

PyTorch 模型构建 1、GPU配置2、数据预处理3、划分训练集、验证集、测试集4、选择模型5、设定损失函数&优化方法6、模型效果评估 #导入常用包 import os import numpy as np import torch from torch.utils.data import Dataset, DataLoader from torchvision.transfor…

安卓主板定制_电磁屏/电容屏安卓平板基于MTK联发科方案定制

定制化行业平板 在各行各业中的地位越来越重要&#xff0c;甚至在行业转型和发展中发挥着不可替代的作用。随着工业化社会的快速发展&#xff0c;工业生产对智控设备要求越来越高&#xff0c;运用的范畴也越来越普遍广泛&#xff0c;工业级平板就是其中一种应用广泛的设备。 新…

流程挖掘在医疗领域中的应用价值

医院作为一个庞大的医疗机构&#xff0c;承担着诊断、治疗和护理等重要任务。每天&#xff0c;数以千计甚至数以万计的患者涌入医院&#xff0c;带来了大量的医疗需求和数据。同时&#xff0c;医学技术的进步和信息化的发展使得医院面临着日益增长的信息量&#xff0c;导致信息…

字节一面:post为什么会发送两次请求?

前言 最近博主在字节面试中遇到这样一个面试题&#xff0c;这个问题也是前端面试的高频问题&#xff0c;因为在前端开发的日常开发中我们总是会与post请求打交道&#xff0c;一个小小的post请求也是牵扯到很多知识点的&#xff0c;博主在这给大家细细道来。 &#x1f680; 作者…

python爬虫实战(3)--爬取某乎热搜

1. 分析爬取地址 打开某乎首页&#xff0c;点击热榜 这个就是我们需要爬取的地址&#xff0c;取到地址某乎/api/v3/feed/topstory/hot-lists/total?limit50&desktoptrue 定义好请求头&#xff0c;从Accept往下的请求头全部复制&#xff0c;转换成json headers {Accep…

Levels - 场景参考:山脉景观(Landscape Mountains)

一些从前的笔记的归档&#xff0c;记录了一些UE4资产的相关信息&#xff1b; 山脉景观&#xff08;Landscape Mountains&#xff09;&#xff1a; 项目的地形材质比较复杂&#xff0c;有几个比较重要的大效果功能&#xff0c;一个是沉积岩的效果&#xff1a; 沉积岩效果的功能…

保研面试题复习

信源/信道编码的目的和种类&#xff1f; 这个图是每个人在学习通信原理的时候&#xff0c;都会遇到的图。包含了三要素&#xff1a;信源、信道和信宿。这个图直接可以回答最开始的问题&#xff0c;所谓信源编码就是针对信源编码&#xff0c;所谓信道编码就是针对信道编码。 有…

python 使用 pdf2image 库将PDF转换为图片

python 使用 pdf2image 库将PDF转换为图片 初环境步骤一&#xff1a;安装pdf2image库步骤二&#xff1a;导入必要的库步骤三&#xff1a;指定PDF文件路径步骤四&#xff1a;将PDF转换为图片步骤五&#xff1a;保存图像为图片文件完整代码运行结果 在数字化时代&#xff0c;PDF&…

如何在 Ubuntu 中安装最新的 Python 版本

动动发财的小手&#xff0c;点个赞吧&#xff01; Python 是增长最快的主要通用编程语言。其原因有很多&#xff0c;例如其可读性和灵活性、易于学习和使用、可靠性和效率。 目前使用的 Python 有两个主要版本 – 2 和 3&#xff08;Python 的现在和未来&#xff09;&#xff1…

Unity——动效与缓动动画

游戏体验是综合性的&#xff0c;音效、剧情、界面设计、美术风格和玩法内涵都是游戏体验的组成部分。而且一些细节上的美化&#xff0c;会出乎意料地带给用户愉悦感和满足感。这些细节包括跳跃的图标、闪烁的文字、流畅滑动的通讯录等&#xff0c;可以统称为动态效果或动效。 …

通过运行中的容器生成 Docker Compose 配置文件

背景 笔者之前有一次不小心删除了原始的 docker-compose.yml 文件&#xff0c;不过正在运行的 Docker 容器还在&#xff0c;找了许久&#xff0c;发现一个方法可以从这些容器中生成一个等效的 Docker Compose 配置文件。本文将介绍使用 autocompose 工具从正在运行的容器中反向…

http协议和HTTP编程流程

目录 1、http协议 &#xff08;1&#xff09;概念 &#xff08;2&#xff09;使用的端口 &#xff08;3&#xff09;长连接和短连接 &#xff08;4&#xff09;常见web服务器 2、https&#xff08;443&#xff09; 3、浏览器连接服务器编程 1、http协议 &#xff08;超文…

mysql insert出现主键冲突错误的解决方法

mysql insert出现主键冲突错误的解决方法 insert 时防止出现主键冲突错误的方法 在mysql中插入数据的时候常常因为主键存在而冲突报错&#xff0c;下面有两个解决方法&#xff1a; 1 在insert 语句中添加ignore 关键字 insert ignore into table (id,name) values (1,username)…

Linux下的系统编程——makefile入门(四)

前言&#xff1a; 或许很多Winodws的程序员都不知道这个东西&#xff0c;因为那些Windows的IDE都为你做了这个工作&#xff0c;但我觉得要作一个好的和professional的程序员&#xff0c;makefile还是要懂。这就好像现在有这么多的HTML的编辑器&#xff0c;但如果你想成为一个专…

【git】工作场景中常用的git命令

工作场景中常用的git命令 1. 必备改名改邮箱拉代码下来并且创建新分支git commit回滚某个文件删除分支 工作场景中常用的git命令&#xff0c;记录下来方便调取 1. 必备 改名改邮箱 一般与他人合作&#xff0c;至少你提交的名字得被人熟知或者遵循规范&#xff0c;因此需要更改…

【业务功能篇74】三高微服务项目springboot-springcloud

三高指的是&#xff1a;高性能、高并发、高可用 2.项目架构 2.1 系统架构图 整体的项目架构图如下 2.2 业务组成 整体的项目业务组成如下