使用Vue的props进行组件传递校验时出现 Extraneous non-props attributes的解决方案

作者:CSDN-PleaSure乐事

欢迎大家阅读我的博客 希望大家喜欢

使用环境:WebStorm

目录

出现错误的情况

报错:

代码:

报错截图

原因分析

解决方案

方法一

方法二


出现错误的情况

以下是我遇到该错误时遇到的报错和代码:

报错:

[Debug] [vite] connecting... (client, line 495) [Debug] [vite] connected. (client, line 614) [Warning] [Vue warn]: Extraneous non-props attributes (title) were passed to component but could not be automatically inherited because component renders fragment or text or teleport root nodes. (9) (vue.js, line 2116) " " " at <ComponentB" "title=30" ">" " " " at <ComponentA" ">" " " " at <App>" [Warning] [Vue warn]: Extraneous non-props attributes (title) were passed to component but could not be automatically inherited because component renders fragment or text or teleport root nodes. (9) (vue.js, line 2116) " " " at <ComponentB" "title=\"Hello World\"" ">" " " " at <ComponentA" ">" " " " at <App>"的错误

代码:

App.vue

<template><componentA />
</template>
<script>
import componentA from "@/components/componentA.vue";export default {data() {return {}},components:{componentA}}
</script>

componentA.vue

<template><h3>{{ componentName }}</h3><ComponentB :title="titleOne" /><ComponentB :title="titleTwo" />
</template><script>
import ComponentB from "@/components/componentB.vue";export default {data() {return {componentName: 'this is componentA',titleOne: 30,titleTwo: "Hello World"};},components: {ComponentB}
};
</script>

componentB.vue

<template><h3>{{componentName}}</h3><p>{{titleOne}}</p><p>{{titleTwo}}</p>
</template>
<script>
export default {data(){return {componentName: 'this is componentB'}},props:{titleOne:{type:[String,Array,Number]},titleTwo:{type:String}}
}
</script>

报错截图

原因分析

问题的主要原因在于 componentB.vue 中定义的 props (titleOne, titleTwo) 与 componentA.vue 中传递的属性 (title) 不匹配。具体来说:

在 componentA.vue 中,您通过 :title="titleOne" 和 :title="titleTwo" 向 ComponentB 传递了 title 属性。
然而,在 componentB.vue 中,您定义的是 titleOne 和 titleTwo 作为 props,而不是 title。
因此,当 componentA.vue 尝试将 title 属性传递给 ComponentB 时,ComponentB 并没有定义接收这个属性的 prop,导致 Vue 抛出警告,表示这些非 prop 属性无法自动继承。

解决方案

方法一

要解决这个问题,需要确保 componentA.vue 传递的属性名称与 componentB.vue 定义的 props 名称相匹配。以下是两种解决方案。

如果希望保留 componentB.vue 的当前 props 结构(即 titleOnetitleTwo),那么需要相应地调整 componentA.vue,以传递正确的属性名,即修改componentA.vue中template的结构

<template><h3>{{ componentName }}</h3>//把原来的title分别变成了title-one和title-two<ComponentB :title-one="titleOne" /><ComponentB :title-two="titleTwo" />
</template>
//下面的内容不变
<script>
import ComponentB from "@/components/componentB.vue"; // 使用 PascalCaseexport default {data() {return {componentName: 'this is componentA',titleOne: 30,titleTwo: "Hello World"};},components: {ComponentB}
};
</script>

需要注意的是,当在模板中使用 kebab-case(如 :title-one)时,Vue 会自动将其转换为 camelCase(如 titleOne)来匹配 JavaScript 中的对象键名。

方法二

可以只定义一个 title的prop,并且在 componentA.vue 中两次传递 title 属性,即修改compnentB.vue的内容,删去titleOne和titleB当中的一个,保留另一个并改为title即可

<template><h3>{{componentName}}</h3><p>{{title}}</p>
</template>
<script>
export default {data(){return {componentName: 'this is componentB'}},props:{title:{type:[String,Array,Number]}}
}
</script>

这样问题就解决了,希望对大家有帮助。

作者:CSDN-PleaSure乐事

希望我的博客对您有帮助,也希望在对您有帮助时您可以为我留下点赞收藏与关注,这对我真的很重要,谢谢!

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

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

相关文章

后端-redis

Redis RedisString类型String类型的常用命令 Hash类型Hash类型的常用命令 List类型List类型的常用命令 Set类型Set类型的常用命令 SortedSet类型SortedSet类型的常用命令 Redis序列化缓存更新策略缓存穿透缓存雪崩缓存击穿 Redis Redis是一个key-value的数据库&#xff0c;key…

Android 代码模式的理解

定义&#xff1a;给目标对象提供一个代理对象&#xff0c;并由代理对象控制目标对象的引用 目的&#xff1a;通过引入代理的方式来间接访问目标对象&#xff0c;防止直接访问目标对象给系统带来不确定的复杂性 静态代理&#xff1a;编译时就确定了被代理的类是哪一个动态代理&…

基于卷积神经网络融合Inception模块的人脸识别

&#x1f472;&#x1f472;作者主页&#xff1a;&#x1f517;杰森的博客 &#x1f4d2;&#x1f4d2;本文摘要&#xff1a;基于卷积神经网络融合Inception模块的人脸识别&#xff0c;原理分享 &#x1f496;&#x1f496;如果本文帮助到你的话&#xff0c;还请各位小伙伴&…

ffmpeg之显示一个yuv照片

显示YUV图片的步骤 1.初始化SDL库 目的&#xff1a;确保SDL库正确初始化&#xff0c;以便可以使用其窗口、渲染和事件处理功能。操作&#xff1a;调用 SDL_Init(SDL_INIT_VIDEO) 来初始化SDL的视频子系统。 2.创建窗口用于显示YUV图像&#xff1a; 目的&#xff1a;创建一个…

php的线程安全与非线程安全版本的区别

PHP的线程安全&#xff08;Thread Safe&#xff0c;简称TS&#xff09;与非线程安全&#xff08;Non-Thread Safe&#xff0c;简称NTS&#xff09;版本主要在多线程环境下的行为特性、性能、以及适用场景上存在差异。以下是两者的详细对比&#xff1a; 一、定义与概念 线程安…

iDP3复现代码模型训练全流程(一)——train_policy.sh

iDP3 核心脚本包括三个&#xff1a;deploy_policy.sh、vis_dataset.sh、train_policy.sh&#xff0c;分别代表了部署、预处理和训练&#xff0c;分别作为对应 py 脚本的参数设置前置环节 训练环节仅需运行指令&#xff1a; # 3d policy bash scripts/train_policy.sh idp3 gr1…

链原生 Web3 AI 网络 Chainbase 推出 AVS 主网, 拓展 EigenLayer AVS 应用场景

Chainbase AVS 主网的正式上线&#xff0c;正在将 Chainbase 不同的层进行深入的串联&#xff0c;为 Chainbase 数据网络带来了验证和处理方面的应用与拓展的能力&#xff0c;并成为数据体系全面启动的新契机。 在 12 月 4 日&#xff0c;链原生的 Web3 AI 数据网络 Chainbase …

Rasa框架的优点和缺点

优点 1. 开源和免费 Rasa 是开源的&#xff0c;无需支付许可费用&#xff0c;可自由下载和修改源码&#xff0c;适合预算有限或需要定制化解决方案的团队。企业可以完全掌控自己的对话系统&#xff0c;无需依赖外部服务。 2. 数据隐私和安全 Rasa 支持完全本地部署&#xf…

如何提高永磁电动机的节电效果

在现代工业和家庭应用中&#xff0c;永磁电动机因其优越的性能和节能特性&#xff0c;逐渐成为主流选择。随着能源日益紧缺和环境问题的日益严重&#xff0c;寻求高效的电动机节能方案显得尤为重要。 一、永磁电动机的基本原理 永磁电动机的核心是永磁体&#xff0c;这些永磁…

Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码 【AI辅助开发系列】

&#x1f380;&#x1f380;&#x1f380;【AI辅助编程系列】&#x1f380;&#x1f380;&#x1f380; Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码Visual Studio 安装和管理 GitHub CopilotVisual Studio 使用 GitHub Copilot 扩展Visual Studio 使用 GitHu…

Jenkins 任意文件读取(CVE-2024-23897)修复及复现

Jenkins任意文件读取漏洞CVE-2024-23897修复及复现 漏洞详情影响范围漏洞复现修复建议 Jenkins是一个开源软件项目&#xff0c;是基于Java开发的一种持续集成工具&#xff0c;用于监控持续重复的工作&#xff0c;旨在提供一个开放易用的软件平台&#xff0c;使软件项目可以进行…

智慧农业云平台与水肥一体化:道品科技引领农业现代化新潮流

在当今科技飞速发展的时代&#xff0c;农业也正经历着一场深刻的变革。智慧农业云平台和水肥一体化技术的出现&#xff0c;为农业生产带来了前所未有的机遇和挑战。 一、智慧农业云平台&#xff1a;农业生产的 “智慧大脑” 智慧农业云平台就像是农业生产的 “智慧大脑”&…

C++--------内存结构

C内存结构 程序内存分区&#xff1a; 栈区&#xff08;Stack&#xff09;&#xff1a;由编译器自动分配和释放&#xff0c;用于存放函数的参数值、局部变量等。其操作方式类似于数据结构中的栈&#xff0c;先进后出。例如&#xff0c;在函数调用时&#xff0c;函数内部的局部变…

f(f(x))=x^2 -11x+36, 求f(6)的值,

偶然看到的一个题目&#xff0c;一时兴起&#xff0c;做了一下。题目如下 简单粗暴的思路是待定系数法&#xff0c;盲猜f(x)是个2次函数&#xff0c;令f(x)ax^2bxc ,带入原式&#xff0c;发现矛盾&#xff08;计算略&#xff09;就想放弃了。 忽然看到如果带入6 的话&#xf…

用Python PySide6 复刻了两软件UI 做下练习

图样 1 代码 1&#xff1a; # -*- coding: utf-8 -*-import sys from PySide6.QtCore import (QCoreApplication, QMetaObject, QRect, QDate) from PySide6.QtGui import QIcon, QPixmap, QColor from PySide6.QtWidgets import (QApplication, QDialog, QLineEdit, QPushBut…

C语言结构体详细讲解

文章目录 [TOC] 一、前言二、结构体2.1 结构体概念&#x1f388;2.2 结构体定义&#x1f389;2.3 结构体使用&#x1f397;️2.4 结构体数组使用&#x1f397;️ 结尾 时间紧后面还有一些知识点这周内补上&#xff0c; 理解理解&#xff01;(❁◡❁) 一、前言 在学习结构体之前…

活动图的理解和实践

在软件开发和系统设计中&#xff0c;理解系统的工作流程和并发行为是至关重要的。活动图作为一种重要的建模工具&#xff0c;为我们提供了一种直观且有效的方法来描述这些复杂的过程。本文将详细探讨活动图的理解与实践&#xff0c;包括其基本概念、用途、构建方法以及实际应用…

简述Git中如何将一个新增文件添加到本地仓库?

在Git中&#xff0c;将一个新增文件添加到本地仓库通常需要以下步骤&#xff1a; 将文件添加到暂存区&#xff1a;首先&#xff0c;你需要使用git add命令来将新文件添加到暂存区。 使用文件名&#xff1a;git add <filename>使用点号添加所有文件&#xff1a;git add .使…

memcached 与 redis 的区别?

1、Redis 不仅 仅 支 持 简 单 的 k/v 类型 的 数 据 &#xff0c;同时 还 提 供 list&#xff0c;set&#xff0c;zset&#xff0c;hash等数 据 结 构 的 存 储 。而 memcache 只支 持 简 单 数 据 类 型 &#xff0c;需要 客 户 端 自 己 处 理 复杂对 象 2、 Redis 支持 数 …

Redis缓存数据库

1、介绍 redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库 redis的官网&#xff1a;redis.io 注:域名后缀io属于国家域名&#xff0c;是british Indian Ocean territory&#xff0c;即英属印度洋领地 1、redis的特点: 1.丰富的数…