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 相关文章推荐
小议Function.apply() 之一------(函数的劫持与对象的复制)
Nov 30 Javascript
AJAX架构之Dojo篇
Apr 10 Javascript
js实现目录定位正文示例
Nov 14 Javascript
Javascript中的五种数据类型详解
Dec 26 Javascript
JavaScript中遍历对象的property的3种方法介绍
Dec 30 Javascript
Bootstrap被封装的弹层
Jul 20 Javascript
AngularJS实现表单验证功能
Jan 09 Javascript
解决jquery appaend元素中id绑定事件失效的问题
Sep 12 jQuery
JS实现数组简单去重及数组根据对象中的元素去重操作示例
Jan 05 Javascript
jQuery实现的淡入淡出图片轮播效果示例
Aug 29 jQuery
js实现多个倒计时并行 js拼团倒计时
Feb 25 Javascript
layui table 表格上添加日期控件的两种方法
Sep 28 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编写和读取XML的几种方式
2013/01/12 PHP
PHP生成sitemap.xml地图函数
2013/11/13 PHP
php页面防重复提交方法总结
2013/11/25 PHP
php修改上传图片尺寸的方法
2015/04/14 PHP
Linux系统递归生成目录中文件的md5的方法
2015/06/29 PHP
php readfile下载大文件失败的解决方法
2017/05/22 PHP
PHP INT类型在内存中占字节详解
2019/07/20 PHP
javaScript call 函数的用法说明
2010/04/09 Javascript
JavaScript实现页面实时显示当前时间的简单实例
2013/07/20 Javascript
js 模式窗口(模式对话框和非模式对话框)的使用介绍
2014/07/17 Javascript
jquery获取一个元素下面相同子元素的个数代码
2014/07/31 Javascript
jQuery的deferred对象详解
2014/11/12 Javascript
jQuery中innerHeight()方法用法实例
2015/01/19 Javascript
JQuery判断checkbox是否选中及其它复选框操作方法合集
2015/06/01 Javascript
jQuery带进度条全屏图片轮播特效代码分享
2020/06/28 Javascript
基于JavaScript实现前端文件的断点续传
2016/10/17 Javascript
jQuery+json实现动态创建复杂表格table的方法
2016/10/25 Javascript
Javascript ES6中数据类型Symbol的使用详解
2017/05/02 Javascript
浅谈React高阶组件
2018/03/28 Javascript
使用vue-router与v-if实现tab切换遇到的问题及解决方法
2018/09/07 Javascript
angularJs在多个控制器中共享服务数据的方法
2018/09/30 Javascript
利用Python操作消息队列RabbitMQ的方法教程
2017/07/19 Python
python3实现163邮箱SMTP发送邮件
2018/05/22 Python
python绘制多个子图的实例
2019/07/07 Python
python通过TimedRotatingFileHandler按时间切割日志
2019/07/17 Python
日本索尼音乐商店:Sony Music Shop
2018/07/17 全球购物
优秀求职自荐信怎样写
2013/12/18 职场文书
初中数学教学反思
2014/01/16 职场文书
农村产权制度改革实施方案
2014/03/21 职场文书
商业街策划方案
2014/05/31 职场文书
应用外语系自荐信
2014/06/26 职场文书
2014旅游局党组书记党建工作汇报材料
2014/11/02 职场文书
龙潭大峡谷导游词
2015/02/10 职场文书
创业计划书之家政服务
2019/09/18 职场文书
python b站视频下载的五种版本
2021/05/27 Python
Win11远程连接不上怎么办?Win11远程桌面用不了的解决方法
2022/08/05 数码科技