(二十四)Vue之props配置项

news/2025/1/12 0:59:42/

文章目录

  • props
  • 基本使用
    • props的数组形式
    • props的对象形式
    • 检测类型
    • 检测类型 + 其他验证

Vue学习目录

上一篇:(二十三)Vue之ref属性

props

props 可以是数组或对象,用于让组件接收外部传过来的数据
约定props是只读的,Vue底层会监测你对props的修改,如果进行了修改,就会发出警告,若业务需求确实需要修改,那么可以复制props的内容到data中一份,然后去修改data中的数据。

因为props的值由外部提供,根据单一职责和开闭原则,对于组件本身而言,不应该对props的值做修改的动作,以确保props的数据流单一性和可控性。如果组件也对props进行修改,那么就会打破数据流的单一性,因为从组件来看没法确保这个值的生产过程是一致的,从而引入混乱,进而导致组件可能会变得很难维护,所以不建议组件本身去修改props,而是只读取props的值就好。

基本使用

父组件:使用在组件标签里使用 属性名="属性值"传递数据
子组件:使用props配置项进行接收

props的数组形式

数组里使用字符串类型的属性名进行接收
父组件:

    <Student name="张三" age="18" sex="男"/><hr><Student name="李四" age="20" sex="男"/><hr><Student name="小米" age="22" sex="女"/><hr>

子组件:

    <h2>学生姓名:{{name}}</h2><h2>学生性别:{{sex}}</h2><h2>学生年龄:{{age}}</h2>
	props:['name','sex','age']

效果:
在这里插入图片描述

props的对象形式

检测类型

props:{name:String,age:Number,sex:String}

当然,要传值的时候是数字类型,要使用v-bind的形式

    <Student name="张三" :age="20" sex="男"/><hr><Student name="李四" :age="20" sex="男"/><hr><Student name="小米" :age="18" sex="女"/><hr>

效果:
在这里插入图片描述

检测类型 + 其他验证

要求props里的属性名配置是一个对象类型
验证包括:

  • default:值是any
    为该 prop 指定一个默认值。如果该 prop 没有被传入,则换做用这个值。对象或数组的默认值必须从一个工厂函数返回。
  • required:值是Boolean
    定义该 prop 是否是必填项。在非生产环境中,如果这个值为 truthy 且该 prop 没有被传入的,则一个控制台警告将会被抛出。
  • validator:值是Function,会收到一个值,这个值是传过来的值
    自定义验证函数会将该 prop 的值作为唯一的参数代入。在非生产环境下,如果该函数返回一个 false 的值 (也就是验证失败),一个控制台警告将会被抛出。
    子组件:
props:{name:{type:String,//类型required:true//必要的},age:{type:Number,default:99,//默认值validator(value) {return value >= 0}},sex:{type:String,required: true}},

如果传值是正常:

    <Student name="张三" :age="20" sex="男"/><hr><Student name="李四" :age="20" sex="男"/><hr><Student name="小米" :age="18" sex="女"/><hr>

效果:正常显示
在这里插入图片描述
如果不传age值:

    <Student name="张三" sex="男"/><hr><Student name="李四" sex="男"/><hr><Student name="小米" sex="女"/><hr>

效果:使用默认值
在这里插入图片描述
如果不传name

    <Student :age="20" sex="男"/><hr><Student :age="20" sex="男"/><hr><Student :age="18" sex="女"/><hr>

效果:name不显示,并且控制台报错
在这里插入图片描述

如果age传值是一个负数

    <Student name="张三" :age="20" sex="男"/><hr><Student name="李四" :age="20" sex="男"/><hr><Student name="小米" :age="-1" sex="女"/><hr>

效果:能正常显示,但是控制台报错
在这里插入图片描述


http://www.ppmy.cn/news/6906.html

相关文章

Python 面向对象编程(一)

【无限嚣张&#xff08;菜菜&#xff09;】&#xff1a;hello您好&#xff0c;我是菜菜&#xff0c;很高兴您能来访我的博客&#xff0c;我是一名爱好编程学习研究的菜菜&#xff0c;每天分享自己的学习&#xff0c;想法&#xff0c;博客来源与自己的学习项目以及编程中遇到问题…

TfS-CI(携手实现可持续发展)审核知多少?

【TfS-CI&#xff08;携手实现可持续发展&#xff09;审核知多少&#xff1f;】 EcoVadis可持续性评分平台相信不少人有听说过&#xff0c;那么和它一样致力于可持续发展的TfS-CI审核不知道大家又了解多少&#xff1f; 谈到TfS-CI审核&#xff0c;不得不先说“携手实现可持续发…

浅析几种常见的诊断数据库——ARXML

分别回忆了常见诊断数据库CDD、ODX文件格式,今天主要介绍另外一种常用的数据库文件格式——ARXML(主要应用于AUTOSAR流程数据交互) AUTOSAR诊断提取模板——ARXML AUTOSAR是汽车开放系统架构,该架构有利于车辆电子系统软件的交互与更新,并为高效管理复杂的车辆电子和软件…

带你走进Java字符串的小世界

目录 一. String 1. 什么是String 2. String常用构造器 3. 字符串的判断 4. 字符串的获取 5. 字符串的转换 6. 字符串比较和替换 7. 字符串的切割 二. StringBuffer与StringBuilder 2.1 关于StringBuffer 2.1.1 定义 2.1.2 构造方法 2.2 关于StringBuffer 三. StringJoiner的使…

【Java 数据结构】优先级队列

篮球哥温馨提示&#xff1a;编程的同时不要忘记锻炼哦&#xff01;谁是你的优先级呢&#xff1f; 目录 1、优先级队列 1.1 优先级队列概念 1.2 堆的概念 1.3 堆的存储结构 2、模拟实现优先级队列 2.1 成员变量的设定 2.2 根据数组构造出一个堆 2.3 向下调整 2.4 creat…

【Linux】Linux项目自动化构建工具——make/Makefile

我举报&#xff0c;有人不学习&#xff01;&#xff01;&#xff01; 文章目录一、makefile原理二、初步理解makefile的语法1.gcc如何得知&#xff0c;源文件不需要再编译了呢&#xff1f;2.为什么执行的指令是make和make clean呢&#xff1f;三、makefile的推导规则四、Linux…

Zabbix技术分享——snmp异常排查指南

大家好&#xff0c;我是乐乐。在IT运维中&#xff0c;难免会碰上设备snmp不通的情况&#xff0c;那么&#xff0c;当问题出现的时候&#xff0c;运维工程师该如何快速找到问题所在呢&#xff1f;下面让我们一起来看看吧&#xff01; 1&#xff0e;IP配置检查 首先检查zabbix监…

2022年虚拟电厂行业研究报

第一章 行业概况 虚拟电厂&#xff08;VPP, Virtual Power Plant&#xff09;本质上是将分布式电源&#xff08;发电&#xff09;、可控负荷&#xff08;用电&#xff09;、储能等利用计算机通信网络技术将其聚合成一个虚拟的集中式电厂&#xff0c;来为电网提供需求侧响应的“…