详解vue中组件参数


Posted in Javascript onJuly 09, 2018

我们来聊一下vue中的组件参数.

1.vue中组件参数

我们可以为组件的 prop 指定验证要求,例如你知道的这些类型。如果有一个需求没有被满足,则 Vue 会在浏览器控制台中警告你。这在开发一个会被别人用到的组件时尤其有帮助。

我们来看下最为简单和常见的vue代码

<div id="root">
      <item content="hello"></item>
    </div>
    <script>
      Vue.component("item",{
        props:["content"],
        template:"<div>{{content}}</div>"
      })
      new Vue({
        el:"#root"
      })
    </script>

这是一个最简单的创建组件和父组件向子组件的例子,但是我们在是否可以考虑一下,如果我希望父组件向子组件传递参数的时候是个数字类型呢?又或者是布尔类型呢?所以我们在这里就必须要对父组件传递过来的参数做一个校验。

<div id="root">
      <item content="hello"></item>
    </div>
    <script>
      Vue.component("item",{
        props:{
          content:String
        },
        template:"<div>{{content}}</div>"
      })
      new Vue({
        el:"#root"
      })
    </script>

我们对第一个例子的代码进行了修改,我们把子组件中的props属性,改为一种对象的形式,而且我们也约束了父组件传递过来的content为String类型,但是还会有这样的一种情况出现,请看下面的代码:

<div id="root">
      <item content="1"></item>
    </div>
    <script>
      Vue.component("item",{
        props:{
          content:String
        },
        template:"<div>{{content}}</div>"
      })
      new Vue({
        el:"#root"
      })
    </script>

我们改变了父组件中content的值等于1,那么我们就很自然的把content理解为数字类型,那么页面就会出现报错的提示.但是我们打开页面后,并没有浏览器报错。这又是为什么呢?

在vue中,默认传递的值都是字符串,如果你想要传递一个数字,那么必须在content前面添加一个:

我们希望它出现报错,那么我们就应该这么修改以上的代码。

<div id="root">
      <item :content="1"></item>
    </div>
    <script>
      Vue.component("item",{
        props:{
          content:String
        },
        template:"<div>{{content}}</div>"
      })
      new Vue({
        el:"#root"
      })
    </script>

那么这个时候,VUE就会给我们一个代码错误提示。如果我们希望它不报错,那么我们修改一下content里面的类型

<div id="root">
      <item :content="1"></item>
    </div>
    <script>
      Vue.component("item",{
        props:{
          content:Number
        },
        template:"<div>{{content}}</div>"
      })
      new Vue({
        el:"#root"
      })
    </script>

当然了,content也是可以接受一个数组的,用来判断它父组件为子组件传递的多个参数。

<div id="root">
      <item :content="1"></item>
    </div>
    <script>
      Vue.component("item",{
        props:{
          content:[String,Number]
        },
        template:"<div>{{content}}</div>"
      })
      new Vue({
        el:"#root"
      })
    </script>

除了数组形式,我们也可以写成对象的形式。那么对象的形式,vue为我们提供了各种可选的参数。

<div id="root">
      <item content="hello world"></item>
    </div>
    <script>
      Vue.component("item",{
        props:{
          content:{
            type:String,
            required:true,
            default:"asd",
            validator:function(value){
              return (value.length>5)
            }
          }
        },
        template:"<div>{{content}}</div>"
      })
      new Vue({
        el:"#root"
      })
    </script>

总结

以上所述是小编给大家介绍的vue中组件参数,希望对大家有所帮助,如果大家有任何疑问请给我留言,

小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
基于jQuery的获得各种控件Value的方法
Nov 19 Javascript
input禁止键盘及中文输入,但可以点击
Feb 13 Javascript
怎么通过onclick事件获取js函数返回值(代码少)
Jul 28 Javascript
jQuery+css实现的换页标签栏效果
Jan 27 Javascript
JS中用try catch对代码运行的性能影响分析
Dec 26 Javascript
js仿微信公众平台打标签功能
Apr 08 Javascript
Vue之Vue.set动态新增对象属性方法
Feb 23 Javascript
使用async await 封装 axios的方法
Jul 09 Javascript
vue实现键盘输入支付密码功能
Aug 18 Javascript
使用vuex解决刷新页面state数据消失的问题记录
May 08 Javascript
微信小程序如何实现精确的日期时间选择器
Jan 21 Javascript
js实现超级玛丽小游戏
Mar 18 Javascript
微信小程序实现手指触摸画板
Jul 09 #Javascript
微信小程序canvas实现刮刮乐效果
Jul 09 #Javascript
vue用Object.defineProperty手写一个简单的双向绑定的示例
Jul 09 #Javascript
js中Object.defineProperty()方法的不详解
Jul 09 #Javascript
微信小程序实现团购或秒杀批量倒计时
Nov 01 #Javascript
微信小程序实现倒计时补零功能
Jul 09 #Javascript
Angular6中使用Swiper的方法示例
Jul 09 #Javascript
You might like
php小偷相关截取函数备忘
2010/11/28 PHP
初识Laravel
2014/10/30 PHP
JQuery中each()的使用方法说明
2010/08/19 Javascript
JS 实现导航栏悬停效果(续2)
2013/09/24 Javascript
js实现键盘Enter键提交表单的方法
2015/05/27 Javascript
ECMAScript中函数function类型
2015/06/03 Javascript
Angularjs整合微信UI(weui)
2016/03/15 Javascript
详解Javascript继承的实现
2016/03/25 Javascript
jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果
2020/04/16 Javascript
JavaScript实现页面定时刷新(定时器,meta)
2016/10/12 Javascript
jQuery的事件预绑定
2016/12/05 Javascript
浅谈angularjs $http提交数据探索
2017/01/20 Javascript
AugularJS从入门到实践(必看篇)
2017/07/10 Javascript
如何用webpack4带你实现一个vue的打包的项目
2018/06/20 Javascript
微信小程序非跳转式组件授权登录的方法示例
2019/05/22 Javascript
javascript严格模式详解(含严格模式与非严格模式的区别)
2019/11/12 Javascript
jQuery实现数字华容道小游戏(实例代码)
2020/01/16 jQuery
[03:17]DOTA2英雄基础教程 剧毒术士
2013/12/12 DOTA
[36:05]完美世界DOTA2联赛循环赛 Forest vs DM 第一场 11.06
2020/11/06 DOTA
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
2017/12/12 Python
python实现代码统计程序
2019/09/19 Python
python性能测量工具cProfile使用解析
2019/09/26 Python
多个python文件调用logging模块报错误
2020/02/12 Python
Python urllib.request对象案例解析
2020/05/11 Python
Python日志打印里logging.getLogger源码分析详解
2021/01/17 Python
支持IE8的纯css3开发的响应式设计动画菜单教程
2014/11/05 HTML / CSS
John Hardy官方网站:手工设计首饰的奢侈品牌
2017/07/05 全球购物
VICHY薇姿美国官方网站:欧洲药房第一的抗衰老品牌
2017/11/22 全球购物
如何用Python输出一个Fibonacci数列
2016/08/28 面试题
毕业生就业意向书
2014/04/01 职场文书
户外活动总结范文
2014/04/30 职场文书
企业承诺书怎么写
2014/05/24 职场文书
企业财务总监岗位职责
2015/04/03 职场文书
python 利用 PIL 将数组值转成图片的实现
2021/04/12 Python
js Proxy的原理详解
2021/05/25 Javascript
Redis Stream类型的使用详解
2021/11/11 Redis