Vue 组件参数校验与非props特性的方法


Posted in Javascript onFebruary 12, 2019

子组件接收父组件的参数的时候,props注册接收的参数

props:['count']

子组件可以对接收的参数校验。

例如规定接收的count参数要求是String

props:{
count:String
}

如果count是别的类型就会报错  

组件的参数校验

组件的参数校验指的是什么呢?你父组件向子组件传递的内容,子组件有权对这个内容进行一些约束,这个约束我们可以把它叫做参数的校验。

<div id="root">
  <child content="hello world"></child>
</div>
Vue.component('child',{
  props: ['content'],
  template: '<div>{{content}}</div>'
})
let vm = new Vue({
  el: '#root',
})

现在有这样一个需求,父组件调用子组件的时候,传递的这个content,我要做一些约束,要求它我传递过来的content必须是一个字符串,我们该怎么实现呢?

<div id="root">
  <child content="hello world"></child>
</div>
Vue.component('child',{
  props: {
    content: String     //子组件接收到的 content 这个属性,必须是一个字符串类型的
  },
  template: '<div>{{content}}</div>'
})
let vm = new Vue({
  el: '#root',
})

组件接收到的content这个属性,必须是一个字符串类型的,如果我需要的参数类型是字符串或者数组,又该怎么写呢?

props: {
  content: [ String, Number ]
},

content的类型,可以用数组来表示。

content其实还有更复杂的用法:

props: {
  content: {
    type: Sring,
    required: true,         //必传
    default: 'default value',    //默认显示,非必传会显示
    validator(value){       //检测 content 的长度,如果长度大于 5,正常显示,如果长度小于 5 则报错 
      return (value.length > 5)
    }
  }
}

非props特性

说到非props特性,它一定和props特性相对应。

props特性:当你的父组件使用子组件的时候,通过属性向子组件传值的时候,恰好子组件里面声明了对父组件传递过来的属性的一个接收,也就是说父子组件有个对应关系,如果你这么写我们就把叫做props特性

props特性的特点是,如下图:

  1. 我们在子组件里有一个content的内容传递,这个属性的内容传递是不会在dom标签上进行显示的。
  2. 当你父组件传递了content,你子组件接收了这个content,你在模版里就可以直接通过插值表达式或者通过this.content,去取得content里面的内容了。

Vue 组件参数校验与非props特性的方法

props特性:父组件向子组件传递了一个属性,但是子组件并没有props这块的内容,也就是说子组件并没有声明我要接收父组件的传递过来的内容

props特点:

  • props特性在子组件里面,没办法获取到你父组件传递的内容,因为你压根没声明你要获取的内容,也就没法用。
  • 如果我们用的是非props特性,那么这个特性是会显示在dom标签上的

Vue 组件参数校验与非props特性的方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
IE和Firefox下event事件杂谈
Dec 18 Javascript
ASP.NET jQuery 实例15 通过控件CustomValidator验证CheckBoxList
Feb 03 Javascript
jquery使用jquery.zclip插件复制对象的实例教程
Dec 04 Javascript
JavaScript函数定义的常见注意事项小结
Sep 16 Javascript
JS未跨域操作iframe里的DOM
Jun 01 Javascript
D3.js实现折线图的方法详解
Sep 21 Javascript
JSON 对象未定义错误的解决方法
Sep 29 Javascript
jQuery插件jsonview展示json数据
May 26 jQuery
详解关于vue-area-linkage走过的坑
Jun 27 Javascript
浅谈Vue数据响应
Nov 05 Javascript
详解Vue+ElementUI从零开始搭建自己的网站(一、环境搭建)
Apr 30 Javascript
如何使用50行javaScript代码实现简单版的call,apply,bind
Aug 14 Javascript
从组件封装看Vue的作用域插槽的实现
Feb 12 #Javascript
用element的upload组件实现多图片上传和压缩的示例代码
Feb 12 #Javascript
PostgreSQL Node.js实现函数计算方法示例
Feb 12 #Javascript
Vue 动态组件与 v-once 指令的实现
Feb 12 #Javascript
在微信小程序中保存网络图片
Feb 12 #Javascript
VUE中使用MUI方法
Feb 12 #Javascript
如何利用ES6进行Promise封装总结
Feb 11 #Javascript
You might like
PHP中设置一个严格30分钟过期Session面试题的4种答案
2014/07/30 PHP
CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法
2015/12/17 PHP
PHP实现多关键字加亮功能
2016/10/21 PHP
PHP集成环境XAMPP的安装与配置
2018/11/13 PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
2019/04/10 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
Asp.Net alert弹出提示信息的几种方法总结
2014/01/29 Javascript
js获取字符串最后一位方法汇总
2014/11/13 Javascript
JavaScript获取网页支持表单字符集的方法
2015/04/02 Javascript
javascript删除元素节点removeChild()用法实例
2015/05/26 Javascript
JavaScript通过HTML的class来获取HTML元素的方法总结
2016/05/24 Javascript
JS 面向对象之继承---多种组合继承详解
2016/07/10 Javascript
fullpage.js全屏滚动插件使用实例
2016/09/06 Javascript
微信小程序 scroll-view组件实现列表页实例代码
2016/12/14 Javascript
微信小程序-拍照或选择图片并上传文件
2017/01/06 Javascript
js选项卡的制作方法
2017/01/23 Javascript
js实现本地图片文件拖拽效果
2017/07/18 Javascript
jquery获取file表单选择文件的路径、名字、大小、类型
2019/01/18 jQuery
在vue中获取微信支付code及code被占用问题的解决方法
2019/04/16 Javascript
7个好用的JavaScript技巧分享(译)
2019/05/07 Javascript
ElementUI Tree 树形控件的使用并给节点添加图标
2020/02/27 Javascript
如何编写一个 Webpack Loader的实现
2020/10/18 Javascript
详解Python list 与 NumPy.ndarry 切片之间的对比
2017/07/24 Python
Python机器学习算法之k均值聚类(k-means)
2018/02/23 Python
Python 制作查询商品历史价格的小工具
2020/10/20 Python
python 基于opencv操作摄像头
2020/12/24 Python
html5跳转小程序wx-open-launch-weapp踩坑
2020/12/02 HTML / CSS
欧洲最古老的鞋厂:Peter Kaiser
2019/11/05 全球购物
.NET面试问题集
2015/12/08 面试题
土木工程毕业生自荐信
2013/09/21 职场文书
大学四年规划书范文
2013/12/27 职场文书
环卫工人先进事迹材料
2014/06/02 职场文书
2014年中秋寄语
2014/08/11 职场文书
小学生田径运动会广播稿
2014/09/11 职场文书
党员对照检查剖析材料
2014/10/13 职场文书
《金肉人》米特&《航海王》阿鹤声优松岛实因胰脏癌去世 享寿81岁
2022/04/13 日漫