详解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 相关文章推荐
Tab页界面,用jQuery及Ajax技术实现
Sep 21 Javascript
图片延迟加载的实现代码(模仿懒惰)
Mar 29 Javascript
js实现单一html页面两套css切换代码
Apr 11 Javascript
js时间戳格式化成日期格式的多种方法
Nov 11 Javascript
javascript setinterval 的正确语法如何书写
Jun 17 Javascript
详解Jquery的事件操作和文档操作
Dec 19 Javascript
fullPage.js和CSS3实现全屏滚动效果
May 05 Javascript
vue-cli如何引入bootstrap工具的方法
Oct 19 Javascript
防止Layui form表单重复提交的实现方法
Sep 10 Javascript
Js代码中的span拼接问题解决
Nov 22 Javascript
微信小程序语音同步智能识别的实现案例代码解析
May 29 Javascript
js屏蔽F12审查元素,禁止修改页面代码等实现代码
Oct 02 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
LotusPhp笔记之:Logger组件的使用方法
2013/05/06 PHP
XAMPP安装与使用方法详细解析
2013/11/27 PHP
CI框架开发新浪微博登录接口源码完整版
2014/05/28 PHP
PHP 5.3和PHP 5.4出现FastCGI Error解决方法
2015/02/12 PHP
Yii框架中sphinx索引配置方法解析
2016/10/18 PHP
PHP合并数组的2种方法小结
2016/11/24 PHP
映彩衣的js随笔(js图片切换效果)
2011/07/31 Javascript
AngularJS入门教程之迭代器过滤详解
2016/08/18 Javascript
js获取元素的标签名实现方法
2016/10/08 Javascript
jfinal与bootstrap的登出实战详解
2017/11/27 Javascript
JQuery实现table中tr上移下移的示例(超简单)
2018/01/08 jQuery
基于vue-cli vue-router搭建底部导航栏移动前端项目
2018/02/28 Javascript
JavaScript实现数组全排列、去重及求最大值算法示例
2018/07/30 Javascript
vue中$refs, $emit, $on, $once, $off的使用详解
2019/05/26 Javascript
[00:12]DAC2018 no[o]ne亮相SOLO赛 他是否如他的id一样无人可挡?
2018/04/06 DOTA
python zip文件 压缩
2008/12/24 Python
Python中查看文件名和文件路径
2017/03/31 Python
利用python求相邻数的方法示例
2017/08/18 Python
Django后台获取前端post上传的文件方法
2018/05/28 Python
Python之两种模式的生产者消费者模型详解
2018/10/26 Python
5分钟 Pipenv 上手指南
2018/12/20 Python
Django框架首页和登录页分离操作示例
2019/05/28 Python
Python自动抢红包教程详解
2019/06/11 Python
python3获取文件中url内容并下载代码实例
2019/12/27 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
2020/05/09 Python
python 牛顿法实现逻辑回归(Logistic Regression)
2020/10/15 Python
美国唇部护理专家:Sara Happ
2019/06/19 全球购物
俄罗斯药房连锁店:ASNA
2020/06/20 全球购物
运动会方阵解说词
2014/02/12 职场文书
师范生自我鉴定
2014/03/20 职场文书
校庆团日活动总结
2014/08/28 职场文书
弘扬焦裕禄精神走群众路线思想汇报
2014/09/12 职场文书
上课随便讲话检讨书
2014/09/12 职场文书
贷款收入证明范本
2015/06/12 职场文书
初中语文教学研修日志
2015/11/13 职场文书
Spring Cloud 中@FeignClient注解中的contextId属性详解
2021/09/25 Java/Android