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实现仿京东商城省市联动菜单
Nov 19 Javascript
详解Angularjs 如何自定义Img的ng-load 事件
Feb 15 Javascript
jquery实现弹窗功能(窗口居中显示)
Feb 27 Javascript
vue中mint-ui环境搭建详细介绍
Apr 06 Javascript
AngularJS实现的JSONP跨域访问数据传输功能详解
Jul 20 Javascript
通俗易懂地解释JS中的闭包
Oct 23 Javascript
小程序实现五星点评效果
Nov 03 Javascript
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
Sep 24 Javascript
vue项目使用.env文件配置全局环境变量的方法
Oct 24 Javascript
JavaScript变量基本使用方法实例分析
Nov 15 Javascript
uni-app 组件里面获取元素宽高的实现
Dec 27 Javascript
Vue 中如何将函数作为 props 传递给组件的实现代码
May 12 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提取数据库内容中的图片地址并循环输出
2010/03/21 PHP
PHP文章按日期(月日)SQL归档语句
2012/11/29 PHP
PHPExcel在linux环境下导出报500错误的解决方法
2017/01/26 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
2017/04/18 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
实例讲解JS中数组Array的操作方法
2014/05/09 Javascript
js点击选择文本的方法
2015/02/09 Javascript
JavaScript中的bold()方法使用详解
2015/06/08 Javascript
浅谈JavaScript中的字符编码转换问题
2015/07/07 Javascript
jQuery Mobile开发中日期插件Mobiscroll使用说明
2016/03/02 Javascript
老生常谈javascript变量的命名规范和注释
2016/09/29 Javascript
通过扫描二维码打开app的实现代码
2016/11/10 Javascript
深入理解jquery的$.extend()、$.fn和$.fn.extend()
2017/07/08 jQuery
浅谈Express异步进化史
2017/09/09 Javascript
在微信小程序中渲染HTML内容的方法示例
2018/09/28 Javascript
使用Angular自定义字段校验指令的方法示例
2019/02/01 Javascript
Python中输出ASCII大文字、艺术字、字符字小技巧
2015/04/28 Python
python处理按钮消息的实例详解
2017/07/11 Python
Pandas透视表(pivot_table)详解
2019/07/22 Python
python Jupyter运行时间实例过程解析
2019/12/13 Python
pytorch GAN生成对抗网络实例
2020/01/10 Python
关于django python manage.py startapp 应用名出错异常原因解析
2020/12/15 Python
Python 中如何使用 virtualenv 管理虚拟环境
2021/01/21 Python
HTML5 Canvas 起步(1) - 基本概念
2009/05/12 HTML / CSS
html5 外链式实现加减乘除的代码
2019/09/04 HTML / CSS
安德玛比利时官网:Under Armour比利时
2019/08/28 全球购物
高校教师岗位职责
2014/03/18 职场文书
买房委托公证书
2014/04/08 职场文书
重大事项社会稳定风险评估方案
2014/06/15 职场文书
成都人事代理协议书
2014/10/25 职场文书
2015年端午节国旗下演讲稿
2015/03/19 职场文书
国产动画《万圣街》日语配音版制作决定!
2022/03/20 国漫
Win11 引入 Windows 365 云操作系统,适应疫情期间混合办公模式:启动时直接登录、模
2022/04/06 数码科技
Python 数据可视化工具 Pyecharts 安装及应用
2022/04/20 Python
Redis唯一ID生成器的实现
2022/07/07 Redis
Nginx配置使用详解
2022/07/07 Servers