vue prop传值类型检验方式


Posted in Javascript onJuly 30, 2020

prop 传值检验规则

如果是 prop 是静态传值,则必须是 String 类型

如果是 prop 是动态传值,则可以验证任意类型

示例,如果必须要传一个Number,就必须使用 bind

//声明
Vue.component("blog-post", {
 props: {
  postTitle: {
   type: Number,
   default: 10000
  }
 },
 template: "<h3>{{ postTitle }}</h3>"
});
//在template中调用,静态传值,值必定是 String
<blog-post postTitle="54"></blog-post>
//在template中调用,动态传值,值可以是 String、Number、Boolen。。。
<blog-post :postTitle="54"></blog-post>

类型检查的 type 值,可以是下列原生构造函数中的一个:

String

Number

Boolean

Array

Object

Date

Function

Symbol

type 还可以是一个自定义的构造函数,并且通过 instanceof 来进行检查确认。

示例:

//例如,给定下列现成的构造函数:
function Person (firstName, lastName) {
 this.firstName = firstName
 this.lastName = lastName
}
//可以使用,检验是否为 Person 的实例
Vue.component('blog-post', {
 props: {
  author: Person
 }
})

补充知识:vue中prop验证、类型检查及注意事项

1、注意:null和undefined会通过任何类型检测

2、数组或对象类型需要提供默认值的话需要通过函数返回。详情看这里

props:{// 数组或对象的默认值需要通过函数返回
  authInfo:{
  type:Object,
        default(){
   return{
   name:'张三',
            sex:0
          }
        }
      },
      list:{
  type:Array,
        default(){
   return[
   1,2,3
          ]
        }
      }
    }

3、使用自定义函数验证

props:{
  address:{
  validator(value){
          return ['黑龙江','吉林','辽宁'].indexOf(value) !== -1
        }
      }
    }

4、非prop的特性:若一个属性传向一个组件,但是该组件并没有定义相应 prop。则该属性称为非prop特性。非prop特性会作用到组件的根元素上。

若非prop中含有组件跟元素定义的属性。则非prop中的值会覆盖组件定义的值(这种情况称作 非prop继承)。style和class例外,它们会发生合并。

详情看这里

不希望非prop继承该怎么办?

如果不希望非prop自动作用到组件的根元素上可以在vue的组件选项里添加 inheritAttrs选项(此选项无法影响class和style的绑定)。

inheritAttrs:false

inheritAttrs属性可以和$attrs配合可以是非prop作用到开发者想作用到的元素上。而不作用的根元素上。例:

<template>
  <div>
    <input type="text" v-bind="$attrs">  <!--将非prop绑定到此元素-->
  </div>
</template>
<script>
 export default {
 name: "sg-test",
    inheritAttrs:false,//禁止 非prop继承
 }
</script>

以上这篇vue prop传值类型检验方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Js+XML 操作
Sep 20 Javascript
新浪中用来显示flash的函数
Apr 02 Javascript
Prototype 学习 工具函数学习($方法)
Jul 12 Javascript
基于jquery的无缝循环新闻列表插件
Mar 07 Javascript
使用jquery写个更改表格行顺序的小功能
Apr 29 Javascript
JavaScript 开发工具webstrom使用指南
Dec 09 Javascript
基于javascript实现tab切换特效
Mar 29 Javascript
javascript创建对象的几种模式介绍
May 06 Javascript
JavaScript数据结构之二叉查找树的定义与表示方法
Apr 12 Javascript
js 显示日期时间的实例(时间过一秒加1)
Oct 25 Javascript
深入了解JS之作用域和闭包
Jun 16 Javascript
PHP 502bad gateway原因及解决方案
Nov 13 Javascript
Vue(定时器)解决mounted不能获取到data中的数据问题
Jul 30 #Javascript
vue setInterval 定时器失效的解决方式
Jul 30 #Javascript
vue 解决setTimeOut和setInterval函数无效报错的问题
Jul 30 #Javascript
浅谈vue 组件中的setInterval方法和window的不同
Jul 30 #Javascript
详解JavaScript自定义函数
Jul 29 #Javascript
深入了解JavaScript词法作用域
Jul 29 #Javascript
vue监听dom大小改变案例
Jul 29 #Javascript
You might like
PHP生成压缩文件实例
2015/02/07 PHP
php根据生日计算年龄的方法
2015/07/13 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
2017/05/02 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
2017/08/10 PHP
Laravel中错误与异常处理的用法示例
2018/09/16 PHP
Laravel框架Eloquent ORM删除数据操作示例
2019/12/03 PHP
javascript下阻止表单重复提交、防刷新、防后退
2007/08/17 Javascript
javascript获取鼠标位置部分的实例代码(兼容IE,FF)
2013/08/05 Javascript
利用JavaScript检测CPU使用率自己写的
2014/03/22 Javascript
元素未显示设置width/height时IE中使用currentStyle获取为auto
2014/05/04 Javascript
jquery中change()用法实例分析
2015/02/06 Javascript
AngularJS教程 ng-style 指令简单示例
2016/08/03 Javascript
原生JS实现简单放大镜效果
2017/02/08 Javascript
AngularJS页面带参跳转及参数解析操作示例
2017/06/28 Javascript
详解AngularJS1.x学习directive 中‘&amp; ’‘=’ ‘@’符号的区别使用
2017/08/23 Javascript
详解vue 模拟后台数据(加载本地json文件)调试
2017/08/25 Javascript
JS解决position:sticky的兼容性问题的方法
2017/10/17 Javascript
jquery实现侧边栏左右伸缩效果的示例
2017/12/19 jQuery
JavaScript中创建原子的方法总结
2018/08/26 Javascript
浅谈webpack4 图片处理汇总
2018/09/12 Javascript
vue基础之data存储数据及v-for循环用法示例
2019/03/08 Javascript
[01:38]2018DOTA2亚洲邀请赛主赛事第二日现场采访 神秘商人痛陈生计不易
2018/04/05 DOTA
python使用cookielib库示例分享
2014/03/03 Python
python导入时小括号大作用
2017/01/10 Python
Python Numpy 实现交换两行和两列的方法
2019/06/26 Python
利用Python的turtle库绘制玫瑰教程
2019/11/23 Python
关于tf.TFRecordReader()函数的用法解析
2020/02/17 Python
详细分析Python collections工具库
2020/07/16 Python
python 基于Apscheduler实现定时任务
2020/12/15 Python
利用Python函数实现一个万历表完整示例
2021/01/23 Python
Python tkinter实现日期选择器
2021/02/22 Python
信访工作者先进事迹
2014/01/17 职场文书
《雪地里的小画家》教学反思
2014/02/22 职场文书
绿色环保家庭事迹材料
2014/08/31 职场文书
python numpy中setdiff1d的用法说明
2021/04/22 Python
Nginx图片服务器配置之后图片访问404的问题解决
2022/03/21 Servers