详解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 相关文章推荐
一个可拖拽列宽表格实例演示
Nov 26 Javascript
正则表达式搭配js轻松处理json文本方便而老古
Feb 17 Javascript
浅析JQuery UI Dialog的样式设置问题
Dec 18 Javascript
JavaScript字符串对象substr方法入门实例(用于截取字符串)
Oct 16 Javascript
jquery文档操作wrap()方法实例简述
Jan 10 Javascript
JavaScript简单下拉菜单实例代码
Sep 07 Javascript
动态加载JavaScript文件的3种方式
May 05 Javascript
angular的输入和输出的使用方法
Sep 22 Javascript
JavaScrip数组去重操作实例小结
Jun 20 Javascript
使用layer.msg 时间设置不起作用的解决方法
Sep 12 Javascript
JS控制GIF图片的停止与显示
Oct 24 Javascript
ES6中的Javascript解构的实现
Oct 30 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
来自phpguru得Php Cache类源码
2010/04/15 PHP
javascript+php实现根据用户时区显示当地时间的方法
2015/03/11 PHP
vmware linux系统安装最新的php7图解
2019/04/14 PHP
document节点对象的获取方式示例介绍
2013/12/24 Javascript
button没写type=button会导致点击时提交
2014/03/06 Javascript
jQuery EasyUI实现右键菜单变灰不可用效果
2015/09/24 Javascript
自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
2015/12/12 Javascript
nuxt+axios解决前后端分离SSR的示例代码
2017/10/24 Javascript
JavaScript 五大常见函数
2018/03/23 Javascript
深入分析element ScrollBar滚动组件源码
2019/01/22 Javascript
微信小程序中悬浮窗功能的实现代码
2019/08/02 Javascript
微信小程序实现时间进度条功能
2020/11/17 Javascript
详解vue中v-bind:style效果的自定义指令
2020/01/21 Javascript
JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】
2020/05/01 Javascript
[02:57]DOTA2亚洲邀请赛小组赛第四日 赛事回顾
2015/02/02 DOTA
Python函数返回值实例分析
2015/06/08 Python
Python如何读取MySQL数据库表数据
2017/03/11 Python
Centos7 Python3下安装scrapy的详细步骤
2018/03/15 Python
Python之读取TXT文件的方法小结
2018/04/27 Python
关于Python的一些学习总结
2018/05/25 Python
Python3.4 tkinter,PIL图片转换
2018/06/21 Python
对Python3 goto 语句的使用方法详解
2019/02/16 Python
使用Python求解带约束的最优化问题详解
2020/02/11 Python
PyCharm中如何直接使用Anaconda已安装的库
2020/05/28 Python
用python 绘制茎叶图和复合饼图
2021/02/26 Python
html5 利用canvas手写签名并保存的实现方法
2018/07/12 HTML / CSS
中国电子产品外贸网站:MiniIntheBox
2017/02/06 全球购物
GUESS德国官网:美国牛仔服装品牌
2017/02/14 全球购物
澳大利亚领先的在线药房:Pharmacy Online(有中文站)
2020/02/22 全球购物
村委会主任先进事迹
2014/01/15 职场文书
四风剖析查摆对照检查材料思想汇报
2014/09/24 职场文书
给老婆的检讨书
2015/01/27 职场文书
怎样写家长意见
2015/06/04 职场文书
小学班级口号大全
2015/12/25 职场文书
《鸡兔同笼》教学反思
2016/02/19 职场文书
MySQL 查询速度慢的原因
2021/05/25 MySQL