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代码
Nov 20 Javascript
js select常用操作控制代码
Mar 16 Javascript
jQuery处理图片加载失败的常用方法
Jun 08 Javascript
javascript鼠标右键菜单自定义效果
Dec 08 Javascript
js 实现一些跨浏览器的事件方法详解及实例
Oct 27 Javascript
Bootstrap学习笔记之进度条、媒体对象实例详解
Mar 09 Javascript
jQuery幻灯片插件owlcarousel参数说明中文文档
Feb 27 jQuery
JS获取input[file]的值并显示在页面的实现方法
Mar 09 Javascript
浅谈 Webpack 如何处理图片(开发、打包、优化)
May 15 Javascript
详解解决小程序中webview页面多层history返回问题
Aug 20 Javascript
javascript设计模式 ? 观察者模式原理与用法实例分析
Apr 22 Javascript
node koa2 ssr项目搭建的方法步骤
Dec 11 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 发送带附件邮件示例
2014/01/23 PHP
PHP判断远程图片是否存在的几种方法
2014/05/04 PHP
javascript学习笔记(十四) window对象使用介绍
2012/06/20 Javascript
悬浮数字的实现案例
2014/02/19 Javascript
node.js中的buffer.Buffer.isBuffer方法使用说明
2014/12/14 Javascript
javascript元素动态创建实现方法
2015/05/13 Javascript
Bootstrap table分页问题汇总
2016/05/30 Javascript
Bootstrap布局组件教程之Bootstrap下拉菜单
2016/06/12 Javascript
JS经典正则表达式笔试题汇总
2016/12/15 Javascript
JQ中$(window).load和$(document).ready区别与执行顺序
2017/03/01 Javascript
Vue如何实现组件的源码解析
2017/06/08 Javascript
详谈javascript精度问题与调整
2017/07/08 Javascript
Vue中的数据监听和数据交互案例解析
2017/07/12 Javascript
vue-cli常用设置总结
2018/02/24 Javascript
详解JavaScript中的数组合并方法和对象合并方法
2018/05/11 Javascript
cordova+vue+webapp使用html5获取地理位置的方法
2019/07/06 Javascript
Layui实现主窗口和Iframe层参数传递
2019/11/14 Javascript
js防抖函数和节流函数使用场景和实现区别示例分析
2020/04/11 Javascript
js实现简单的轮播图效果
2020/12/13 Javascript
python解析xml文件操作实例
2014/10/05 Python
python查看微信好友是否删除自己
2016/12/19 Python
python装饰器练习题及答案
2019/11/01 Python
django admin管理工具自定义时间区间筛选器DateRangeFilter介绍
2020/05/19 Python
python中查看.db文件中表格的名字及表格中的字段操作
2020/07/07 Python
CSS实现限制字数功能当对象内文本溢出时显示省略标记
2014/08/20 HTML / CSS
法国票务网站:Ticketmaster法国
2018/07/09 全球购物
战友聚会邀请函
2014/01/18 职场文书
创建精神文明单位实施方案
2014/03/08 职场文书
幼儿园教师的考核评语
2014/04/18 职场文书
安全员岗位职责
2015/02/10 职场文书
工程合作意向书范本
2015/05/09 职场文书
董事长秘书工作总结
2015/08/14 职场文书
员工给公司的建议书
2019/06/24 职场文书
Springboot集成阿里云OSS上传文件系统教程
2021/06/28 Java/Android
spring boot中nativeQuery的用法
2021/07/26 Java/Android
十大冰系宝可梦排名,颜值最高的阿罗拉九尾,第三使用率第一
2022/03/18 日漫