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 相关文章推荐
jQuery Tips 为AJAX回调函数传递额外参数的方法
Dec 28 Javascript
js 字符串转化成数字的代码
Jun 29 Javascript
JavaScript中函数声明优先于变量声明的实例分析
Mar 01 Javascript
jquery的clone方法应用于textarea和select的bug修复
Jun 26 Javascript
Javascript中的默认参数详解
Oct 22 Javascript
谈谈我对JavaScript DOM事件的理解
Dec 18 Javascript
vue2.0 循环遍历加载不同图片的方法
Mar 06 Javascript
Vue动态控制input的disabled属性的方法
Jun 26 Javascript
基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法
Dec 09 Javascript
vue读取本地的excel文件并显示在网页上方法示例
May 29 Javascript
js利用拖放实现添加删除
Aug 27 Javascript
vue实现滚动鼠标滚轮切换页面
Dec 13 Vue.js
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做下载文件的实现代码及文件名中乱码解决方法
2011/02/03 PHP
php上传图片存入数据库示例分享
2014/03/11 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
2016/11/25 PHP
在第一个input框内输入内容.textarea自动得到第一个文件框的值的javascript代码
2007/04/20 Javascript
jQuery 使用手册(二)
2009/09/23 Javascript
JS函数实现动态添加CSS样式表文件
2012/12/15 Javascript
jQuery+slidereveal实现的面板滑动侧边展出效果
2015/03/14 Javascript
jQuery获取checkbox选中的值
2016/01/28 Javascript
Bootstrap面板使用方法
2017/01/16 Javascript
vue.js 获取当前自定义属性值
2017/06/01 Javascript
浅谈Angular路由复用策略
2017/10/04 Javascript
微信小程序实现简单input正则表达式验证功能示例
2017/11/30 Javascript
Vue DevTools调试工具的使用
2017/12/05 Javascript
Vue如何实现响应式系统
2018/07/11 Javascript
Vue的watch和computed方法的使用及区别介绍
2018/09/06 Javascript
js常用正则表达式集锦
2019/05/17 Javascript
微信小程序使用车牌号输入法的示例代码
2019/08/20 Javascript
Python基于动态规划算法计算单词距离
2015/07/25 Python
深入讲解Python函数中参数的使用及默认参数的陷阱
2016/03/13 Python
python并发编程之线程实例解析
2017/12/27 Python
如何用Python实现简单的Markdown转换器
2018/07/16 Python
提升Python效率之使用循环机制代替递归函数
2019/07/23 Python
python队列原理及实现方法示例
2019/11/27 Python
python用opencv完成图像分割并进行目标物的提取
2020/05/25 Python
Python 通过正则表达式快速获取电影的下载地址
2020/08/17 Python
香港礼品网站:GiftU eshop
2017/09/01 全球购物
如果Session Bean得Remove方法一直都不被调用会怎么样
2012/07/14 面试题
经贸专业毕业生求职信
2014/03/23 职场文书
抽奖活动主持词
2014/03/31 职场文书
财产公证书
2014/04/10 职场文书
优秀员工演讲稿
2014/05/19 职场文书
关于教师节的演讲稿
2014/09/04 职场文书
司法工作人员群众路线对照检查材料思想汇报
2014/09/30 职场文书
2015年大学教师工作总结
2015/05/20 职场文书
小学毕业教师寄语
2019/06/21 职场文书
在Docker容器中部署SQL Server
2022/04/11 Servers