详细聊聊vue中组件的props属性


Posted in Vue.js onNovember 02, 2021

今天这篇文章,让你彻底学会props属性……

props主要用于组件的传值,他的工作就是为了接收外面传过来的数据,与data、el、ref是一个级别的配置项。

问题一:那props具体是怎么使用呢?原理又是什么呢?往下看

1、【定义被调用组件】首先,我们先定义一个person组件,用于显示个人信息的组件,我们放了一个人的姓名,性别,以及年龄,定义好这个组件之后,就可以等待其他组件进行调用。那么既然别的组件可以调用,我们就需要再定义一个props属性,用于接收别的组件传进来的值。

详细聊聊vue中组件的props属性

 注意:组件中name、sex、age都是一个prop,将三个属性放到一起,就是props,这就是props的由来,是prop的复数形式,代表多个prop属性的集合。

 2、【调用组件】此时我们再定义一个info组件,用于展示这个人的基本信息,进行对person组价的调用实现信息的展示,分为下图四个步骤进行调用。并传入参数

详细聊聊vue中组件的props属性

 3、【看效果】传入成功。

详细聊聊vue中组件的props属性

 问题二:那如果我们想给年龄加1岁,怎么实现?

我们可能会直接这样加1

详细聊聊vue中组件的props属性

 看效果是否能实现,变成19,看下图显然是不正确的。因为你传入的年龄是个字符串18,所以加1只会在18后面进行拼接。

详细聊聊vue中组件的props属性

 然后有的人说,那传数字,怎么传数字呢?很简单,一个符号搞定。

我们只需要在age前面加上冒号 :他就会只识别双引号里面的东西18 ,否则识别的是双引号18

详细聊聊vue中组件的props属性

 看下效果,此时就成功了。

详细聊聊vue中组件的props属性

 问题三:对于年龄这一类型,我们最希望拿到的是什么数据类型?

肯定是数字类型,但是有人非要传字符串类型,就会影响我们对年龄的计算,比如上面的加1……那么我们如何限制类型呢?

 这时候props不能再用[]去定义,需要用{},因为限制类型时,props就是作为一个对象去使用;

下面就是我们将三个属性分别做了限制。

详细聊聊vue中组件的props属性

 我们把年龄做了number类型限制后,再传入字符串18,看有什么变化?

详细聊聊vue中组件的props属性

 此时发现控制台,会报错,显示age的数据类型不匹配。

详细聊聊vue中组件的props属性

 虽然不影响展示,但是会报错。这可以给我们提供一个明确的提示。方便我们规范的传入数据。

 详细聊聊vue中组件的props属性

 问题四:可以限制类型,那是不是也可以限制是否必传呢?

 答:当然可以。

假设姓名必传,其他非必传。

类型属性:type:xx

必传属性:required:true

默认属性:default:xx

详细聊聊vue中组件的props属性

 name必传,那么我们不传试试,年龄不传默认18

详细聊聊vue中组件的props属性

 结果,控制台同样报错,提示,name是必传属性。年龄我们没传,也成功展示的是默认值,19是因为一开始对年龄进行了加1操作,这样我们就成功对属性进行了限制。

详细聊聊vue中组件的props属性

 详细聊聊vue中组件的props属性

对以上总结:

props在接收数据的同时,对数据进行了类型限制+默认值的指定+必要性的限制

问题五:props接收的属性值可以修改吗?

答:不可以

我们添加一个button,以及点击事件

详细聊聊vue中组件的props属性

 注意:我们要访问props里面的属性值,通过this.即可找到

 详细聊聊vue中组件的props属性

 查看结果,发现页面可以显示,但是控制台报错,因此它是不可修改的

详细聊聊vue中组件的props属性

详细聊聊vue中组件的props属性

 问题六:必须要修改props属性值,怎么办?

 答:通过data去间接修改

我们在data里面重新定义一个变量去接收props属性。这个变量最好不要重名,重名的话,优先获取props属性值,优先级props>data。然后我们在操作或者html绑定值的时候,都去操作data里面新定义的变量

详细聊聊vue中组件的props属性

 此时可以看到,修改成功,也没有报错:

详细聊聊vue中组件的props属性

 总结:配置项props

-------让组件接收外部传来的数据

 接收数据三种方式:

(1)只接收:props: ['name','age','sex']

(2)接收并限制类型:props: { "name":Number }

(3)限制类型、限制必要性指定默认值:

props:{
        "name":{
            type:String,
            required:true
        },
        "age":{
            type:Number,
            default:18
        },
        "sex":{
            type:String,
            default:'男'
        },
    },

注意:props是只读的,vue底层会检测你对props的修改,如果进行了修改,控制台会报错,必须修改,就复制一份到data中,通过data去修改数据。

总结

到此这篇关于vue中组件的props属性的文章就介绍到这了,更多相关vue组件的props属性内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
Vue $attrs & inheritAttr实现button禁用效果案例
Dec 07 Vue.js
在vue中使用inheritAttrs实现组件的扩展性介绍
Dec 07 Vue.js
Vue实现点击当前行变色
Dec 14 Vue.js
vue实现购物车的小练习
Dec 21 Vue.js
vue3使用vue-count-to组件的实现
Dec 25 Vue.js
vue-cli4.0多环境配置变量与模式详解
Dec 30 Vue.js
Vue看了就会的8个小技巧
Jan 21 Vue.js
Vue如何实现变量表达式选择器
Feb 18 Vue.js
浅谈vue2的$refs在vue3组合式API中的替代方法
Apr 18 Vue.js
vue实现水波涟漪效果的点击反馈指令
May 31 Vue.js
详解Vue slot插槽
Nov 20 Vue.js
vue elementUI表格控制对应列
Apr 13 Vue.js
一定要知道的 25 个 Vue 技巧
简单聊聊Vue中的计算属性和属性侦听
Oct 05 #Vue.js
SSM VUE Axios详解
vue使用Google Recaptcha验证的实现示例
Vue鼠标滚轮滚动切换路由效果的实现方法
Aug 04 #Vue.js
Vue3.0 手写放大镜效果
vue项目多环境配置(.env)的实现
You might like
PHP提取数据库内容中的图片地址并循环输出
2010/03/21 PHP
php session_start()出错原因分析及解决方法
2013/10/28 PHP
PHP的Laravel框架中使用AdminLTE模板来编写网站后台界面
2016/03/21 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
2016/05/19 PHP
php批量删除操作(数据访问)
2017/05/23 PHP
javascript js cookie的存储,获取和删除
2007/12/29 Javascript
详解JavaScript中undefined与null的区别
2014/03/29 Javascript
Enter回车切换输入焦点实现思路与代码兼容各大浏览器
2014/09/01 Javascript
浅谈javascript 归并方法
2015/01/21 Javascript
moment.js轻松实现获取当前日期是当年的第几周
2015/02/05 Javascript
jQuery实现冻结表头的方法
2015/03/09 Javascript
使用jQuery UI库开发Web界面的简单入门指引
2016/04/22 Javascript
Bootstrap组件学习之导航、标签、面包屑导航(精品)
2016/05/17 Javascript
JavaScript轮播图简单制作方法
2017/02/20 Javascript
vue父组件通过props如何向子组件传递方法详解
2017/08/16 Javascript
AngularJs 延时器、计时器实例代码
2017/09/16 Javascript
JS随机排序数组实现方法分析
2017/10/11 Javascript
Vuex 模块化使用详解
2019/07/31 Javascript
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
2019/08/23 Javascript
node.js制作一个简单的登录拦截器
2020/02/10 Javascript
Bootstrap实现前端登录页面带验证码功能完整示例
2020/03/26 Javascript
Python的Django框架中的select_related函数对QuerySet 查询的优化
2015/04/01 Python
python实现带错误处理功能的远程文件读取方法
2015/04/29 Python
基于python的图片修复程序(实现水印去除)
2018/06/04 Python
详解python读取image
2019/04/03 Python
Django实现WebSSH操作物理机或虚拟机的方法
2019/11/06 Python
CSS3 filter(滤镜)实现网页灰色或者黑色模式的代码
2020/11/30 HTML / CSS
使用html2canvas.js实现页面截图并显示或上传的示例代码
2018/12/18 HTML / CSS
美国优质马术服装购买网站:Breeches.com
2019/12/16 全球购物
卫校毕业生自我鉴定
2013/10/31 职场文书
中秋节超市促销方案
2014/01/30 职场文书
财产公证书
2014/04/10 职场文书
幼儿园保育员岗位职责
2014/04/13 职场文书
社区志愿者活动总结
2014/06/26 职场文书
四风剖析查摆对照检查材料思想汇报
2014/09/24 职场文书
美国运营商 T-Mobile 以 117.83Mb/s 的速度排第一位
2022/04/21 数码科技