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获取选中radio对应的值(一句代码)
Jun 03 Javascript
浅析hasOwnProperty方法的应用
Nov 20 Javascript
jquery阻止后续事件只执行第一个事件
Jul 24 Javascript
jQuery无刷新分页完整实例代码
Oct 27 Javascript
js实现n秒倒计时后才可以点击的效果
Dec 20 Javascript
理解javascript模块化
Mar 28 Javascript
vue数据控制视图源码解析
Mar 28 Javascript
vue2.0学习之axios的封装与vuex介绍
May 28 Javascript
jQuery实现的模仿雨滴下落动画效果
Dec 11 jQuery
jQuery简单实现根据日期计算星期几的方法
Jan 09 jQuery
Vue插槽_特殊特性slot,slot-scope与指令v-slot说明
Sep 04 Javascript
Vue实现todo应用的示例
Feb 20 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
CI分页类首页、尾页不显示的解决方法
2016/03/28 PHP
php服务器的系统详解
2019/10/12 PHP
简洁短小的 JavaScript IE 浏览器判定代码
2010/03/21 Javascript
我的javascript 函数链之演变
2011/04/07 Javascript
Js点击弹出下拉菜单效果实例
2013/08/12 Javascript
七个很有意思的PHP函数
2014/05/12 Javascript
一个JavaScript递归实现反转数组字符串的实例
2014/10/14 Javascript
JavaScript SHA512&amp;SHA256加密算法详解
2015/08/11 Javascript
javascript中异常处理案例(推荐)
2016/10/03 Javascript
js正则表达式最长匹配(贪婪匹配)和最短匹配(懒惰匹配)用法分析
2016/12/27 Javascript
WebView启动支付宝客户端支付失败的问题小结
2017/01/11 Javascript
jquery+css实现简单的图片轮播效果
2017/08/07 jQuery
JavaScript闭包和回调详解
2017/08/09 Javascript
Bootstrap fileinput 上传新文件移除时触发服务器同步删除的配置
2018/10/08 Javascript
关于layui的下拉搜索框异步加载数据的解决方法
2019/09/28 Javascript
vue.js click点击事件获取当前元素对象的操作
2020/08/07 Javascript
写一个Vue loading 插件
2020/11/09 Javascript
[01:38]完美世界DOTA2联赛PWL S3 集锦第四期
2020/12/21 DOTA
pycharm 使用心得(一)安装和首次使用
2014/06/05 Python
Python实现类继承实例
2014/07/04 Python
Python socket编程实例详解
2015/05/27 Python
Python优先队列实现方法示例
2017/09/21 Python
Python_查看sqlite3表结构,查询语句的示例代码
2019/07/17 Python
利用python实现PSO算法优化二元函数
2019/11/13 Python
Python中url标签使用知识点总结
2020/01/16 Python
PyCharm 2020 激活到 2100 年的教程
2020/03/25 Python
莫斯科绝对前卫最秘密的商店:SVMoscow
2017/10/23 全球购物
请写出一段Python代码实现删除一个list里面的重复元素
2015/12/29 面试题
销售人员职业生涯规划范文
2014/03/01 职场文书
学习教师法的心得体会
2014/09/03 职场文书
公司授权委托书格式样本
2014/10/01 职场文书
催款通知书范文
2015/04/17 职场文书
2015年机关作风和效能建设工作总结
2015/07/23 职场文书
学习心理学心得体会
2016/01/22 职场文书
2019同学聚会主持词
2019/05/06 职场文书
Mysql 设置boolean类型的操作
2021/06/04 MySQL