详解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 相关文章推荐
能说明你的Javascript技术很烂的五个原因分析
Oct 28 Javascript
jQuery中odd选择器的定义和用法
Dec 23 Javascript
jQuery将所有被选中的checkbox某个属性值连接成字符串的方法
Jan 24 Javascript
JS实现5秒钟自动封锁div层的方法
Feb 20 Javascript
Javascript aop(面向切面编程)之around(环绕)分析
May 01 Javascript
javascript清空table表格的方法
May 14 Javascript
JavaScript中利用Array和Object实现Map的方法
Jul 27 Javascript
微信小程序 视图层(xx.xml)和逻辑层(xx.js)详细介绍
Oct 13 Javascript
详解Vue 动态添加模板的几种方法
Apr 25 Javascript
HTML5+JS+JQuery+ECharts实现异步加载问题
Dec 16 jQuery
vue父子组件间引用之$parent、$children
May 20 Javascript
Vue使用Three.js加载glTF模型的方法详解
Jun 14 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中最简单的字符串匹配算法
2014/12/16 PHP
php中的抽象方法和抽象类
2017/02/14 PHP
用js实现多域名不同文件的调用方法
2007/01/12 Javascript
用Javscript实现表单复选框的全选功能
2007/05/25 Javascript
JS禁用浏览器退格键实现思路及代码
2013/10/29 Javascript
js判断变量初始化的三种形式及推荐用的形式
2014/07/22 Javascript
一个不错的js html页面倒计时可精确到秒
2014/10/22 Javascript
jquery选择器简述
2015/08/31 Javascript
原生js实现图片层叠轮播切换效果
2016/02/02 Javascript
JavaScript计算器网页版实现代码分享
2016/07/15 Javascript
JS图片左右无缝隙滚动的实现(兼容IE,Firefox 遵循W3C标准)
2016/09/23 Javascript
浅析Node.js:DNS模块的使用
2016/11/23 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
2016/12/15 Javascript
JS三目运算(三元运算)方法详解
2017/03/01 Javascript
javascript 中null和undefined区分和比较
2017/04/19 Javascript
微信小程序如何自定义table组件
2019/06/29 Javascript
解决echarts echarts数据动态更新和dataZoom被重置问题
2020/07/20 Javascript
手写Vue2.0 数据劫持的示例
2021/03/04 Vue.js
python函数返回多个值的示例方法
2013/12/04 Python
Python中map,reduce,filter和sorted函数的使用方法
2015/08/17 Python
Python实现读取机器硬件信息的方法示例
2018/06/09 Python
pytorch 调整某一维度数据顺序的方法
2018/12/08 Python
Django Form and ModelForm的区别与使用
2019/12/06 Python
解决更改AUTH_USER_MODEL后出现的问题
2020/05/14 Python
html5中svg canvas和图片之间相互转化思路代码
2014/01/24 HTML / CSS
HTML5实现文件断点续传的方法
2017/01/04 HTML / CSS
Html5 canvas画图白板踩坑
2020/06/01 HTML / CSS
惠普美国官方商店:HP Official Store
2016/08/28 全球购物
C,C++的几个面试题小集
2013/07/13 面试题
九年级英语教学反思
2014/01/31 职场文书
启动仪式策划方案
2014/06/14 职场文书
2014年助理工程师工作总结
2014/11/14 职场文书
违反工作规定检讨书范文
2014/12/14 职场文书
2015年教导处教学工作总结
2015/07/22 职场文书
熟背这些句子,让您的英语口语突飞猛进(135句)
2019/09/06 职场文书
USB TYPE-C 或将成为所有智能手机充电标准
2022/04/21 数码科技