详解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 相关文章推荐
如何做到打开一个页面,过几分钟自动转到另一页面
Apr 20 Javascript
jquery 插件学习(六)
Aug 06 Javascript
Javascript核心读书有感之类型、值和变量
Feb 11 Javascript
基于jQuery插件实现环形图标菜单旋转切换特效
May 15 Javascript
JavaScript和JQuery获取DIV值的方法示例
Mar 07 Javascript
Vue2 SSR渲染根据不同页面修改 meta
Nov 20 Javascript
使用puppeteer破解极验的滑动验证码
Feb 24 Javascript
JS实现的3des+base64加密解密算法完整示例
May 18 Javascript
d3.js实现自定义多y轴折线图的示例代码
May 30 Javascript
详解如何解决Vue和vue-template-compiler版本之间的问题
Sep 17 Javascript
vue 中使用 watch 出现了如下的报错的原因分析
May 21 Javascript
javascript canvas API内容整理
Feb 16 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扩展imagick
2014/06/02 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
2015/07/31 PHP
PHP正则匹配日期和时间(时间戳转换)的实例代码
2016/12/14 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
2018/02/07 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
让FireFox支持innerText的实现代码
2009/12/01 Javascript
基于jQuery的Spin Button自定义文本框数值自增或自减
2010/07/17 Javascript
很棒的学习jQuery的12个网站推荐
2011/04/28 Javascript
JQuery1.6 使用方法三
2011/11/23 Javascript
jquery实现非叠加式的搜索框提示效果
2014/01/07 Javascript
js实现ifram取父窗口URL地址的方法
2015/02/09 Javascript
JavaScript的Number对象的toString()方法
2015/12/18 Javascript
Jquery对新插入的节点 绑定Click事件失效的解决方法
2016/06/02 Javascript
javascript学习笔记_浅谈基础语法,类型,变量
2016/09/19 Javascript
js实现砖头在页面拖拉效果
2020/11/20 Javascript
Javascript 制作图形验证码实例详解
2016/12/22 Javascript
解决bootstrap下拉菜单点击立即隐藏bug的方法
2017/06/13 Javascript
JS设计模式之观察者模式实现实时改变页面中金额数的方法
2018/02/05 Javascript
VueJs里利用CryptoJs实现加密及解密的方法示例
2019/04/29 Javascript
JavaScript从原型到原型链深入理解
2019/06/03 Javascript
Vue.js中的extend绑定节点并显示的方法
2019/06/20 Javascript
JS实现长图上下滚动效果
2020/03/19 Javascript
vue实现评价星星功能
2020/06/30 Javascript
JavaScript实现简单验证码
2020/08/24 Javascript
Python使用QRCode模块生成二维码实例详解
2017/06/14 Python
解决pandas无法在pycharm中使用plot()方法显示图像的问题
2018/05/24 Python
Selenium webdriver添加cookie实现过程详解
2020/08/12 Python
Python图像识别+KNN求解数独的实现
2020/11/13 Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
2021/01/12 Python
Java面试题:为什么要用Java
2012/05/11 面试题
甜品店的创业计划书范文
2014/01/02 职场文书
聘任书的写作格式及范文
2014/03/29 职场文书
参赛口号
2014/06/16 职场文书
新店开张宣传语
2015/07/13 职场文书
关于JavaScript轮播图的实现
2021/11/20 Javascript
javascript之Object.assign()的痛点分析
2022/03/03 Javascript