vue组件Prop传递数据的实现示例


Posted in Javascript onAugust 17, 2017

组件实例的作用域是孤立的。这意味着不能(也不应该)在子组件的模板内直接引用父组件的数据。要让子组件使用父组件的数据,我们需要通过子组件的props选项。

prop 是单向绑定的:当父组件的属性变化时,将传导给子组件,但是不会反过来。这是为了防止子组件无意修改了父组件的状态。

每次父组件更新时,子组件的所有 prop 都会更新为最新值。这意味着你不应该在子组件内部改变 prop。

1、Prop静态传递数据

<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <title></title>
  <script type="text/javascript" src="vue.js"></script>

</head>
<body >
<div id="app">
  <!--静态传递数据-->
   <my-component message="hello" name="刘二狗" age="18"></my-component>
</div>
</body>

<script>
  Vue.component('my-component',{
    //子组件使用父组件的数据 message name age
    props:['message','name','age'],
    //用data选项对数据进行处理
    data:function(){
     return{
       message1: this.message +'用data选项对数据进行处理'
     }
    },
    //用计算属性选项对数据进行处理
    computed:{
      message2:function(){
        return this.message + '用计算属性选项对数据进行处理'
      }
    },
    template:'<div>' +
          '<span>{{message1}}</span><br>'+
          '<span>{{message2}}</span><br>'+
          '<span>{{message}} {{name}}今年{{age}}了</span><br>'+
         '</div>'
  })
  new Vue({
    el:'#app'
  })
</script>
</html>

输出结果:

vue组件Prop传递数据的实现示例

2、Prop动态传递数据

<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <title></title>
  <script type="text/javascript" src="vue.js"></script>
</head>
<body >
<div id="app">
    <input v-model="parentMsg"><br>
    <my-component :message="parentMsg"></my-component>
</div>
</body>

  <script>
    Vue.component('my-component',{
      props:['message'],
      data:function(){
        return{count:this.message+'刘三狗的嫉妒了'}
      },
      computed:{
        normalizedSize: function () {
          return this.message.trim().toLowerCase()
        }
      },
      template:'<div>' +
            '<span>{{message}}---{{normalizedSize}}</span><br>'+
            '<span>{{count}}</span>'+
           '</div>'
    })

    new Vue({
      el:'#app',
      data:{
        parentMsg:'哈哈哈'
      }
    })
</script>
</html>

输出结果:

vue组件Prop传递数据的实现示例

 3、Prop验证,我们可以为组件的 props 指定验证规格。如果传入的数据不符合规格,Vue 会发出警告。在前台的控制器中可以看到警告信息。

<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <title></title>
  <script type="text/javascript" src="vue.js"></script>
</head>
<body>
  <div id="app">
    <example :prop-d="message"></example>
  </div>
</body>

<script>
  Vue.component('example', {
    props: {
      // 基础类型检测 (`null` 意思是任何类型都可以)
      propA: Number,
      // 多种类型
      propB: [String, Number],
      // 必传且是字符串
      propC: {
        type: String,
        required: true
      },
      // 数字,有默认值
      propD: {
        type: Number,
        default: 100
      },
      // 数组/对象的默认值应当由一个工厂函数返回
      propE: {
        type: Object,
        default: function () {
          return { message: 'hello' }
        }
      },
      // 自定义验证函数
      propF: {
        validator: function (value) {
          return value > 10
        }
      }
    },
    template:'<span>{{propD}}</span>'
  })

  new Vue({
    el:'#app',
    data:{
      message:'propD验证只能传入数字类型'
    }
  })
</script>
</html>

控制台输出的警告信息:

vue组件Prop传递数据的实现示例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript初学者应注意的七个细节详细介绍
Dec 27 Javascript
JavaScript中的onerror事件概述及使用
Apr 01 Javascript
JS+CSS实现自适应选项卡宽度的圆角滑动门效果
Sep 15 Javascript
多个js毫秒倒计时同时进行效果
Jan 05 Javascript
基于Javascript实现返回顶部按钮
Feb 29 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单的实现代码
Jun 23 Javascript
使用cropper.js裁剪头像的实例代码
Sep 29 Javascript
关于jQuery里prev()的简单操作代码
Oct 27 jQuery
Vue项目部署在Spring Boot出现页面空白问题的解决方案
Nov 26 Javascript
如何利用ES6进行Promise封装总结
Feb 11 Javascript
swiper实现异形轮播效果
Nov 28 Javascript
vue 使用 sortable 实现 el-table 拖拽排序功能
Dec 26 Vue.js
js实现随机点名小功能
Aug 17 #Javascript
浅谈Vuejs Prop基本用法
Aug 17 #Javascript
简单快速的实现js计算器功能
Aug 17 #Javascript
使用jquery的jsonp如何发起跨域请求及其原理详解
Aug 17 #jQuery
如何理解Vue的.sync修饰符的使用
Aug 17 #Javascript
浅谈JS中的反柯里化( uncurrying)
Aug 17 #Javascript
js编写简单的聊天室功能
Aug 17 #Javascript
You might like
php检测mysql表是否存在的方法小结
2017/07/20 PHP
CodeIgniter框架钩子机制实现方法【hooks类】
2018/08/21 PHP
基础的prototype.js常用函数及其用法
2007/03/10 Javascript
用jquery实现输入框获取焦点消失文字
2013/04/27 Javascript
js的正则test,match,exec详细解析
2014/01/29 Javascript
jQuery中多个元素的Hover事件解决方案
2014/06/12 Javascript
jQuery 1.9.1源码分析系列(十三)之位置大小操作
2015/12/02 Javascript
javascript中加var和不加var的区别 你真的懂吗
2016/01/06 Javascript
js简单倒计时实现代码
2016/04/30 Javascript
利用Javascript实现BMI计算器
2016/08/16 Javascript
vue-image-crop基于Vue的移动端图片裁剪组件示例
2018/08/28 Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
2019/04/23 Javascript
[03:12]完美世界DOTA2联赛PWL DAY6集锦
2020/11/05 DOTA
浅谈Python中的数据类型
2015/05/05 Python
python3之微信文章爬虫实例讲解
2017/07/12 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
2017/11/29 Python
Python实现迭代时使用索引的方法示例
2018/06/05 Python
python爬虫框架scrapy实现模拟登录操作示例
2018/08/02 Python
pandas 将索引值相加的方法
2018/11/15 Python
Python基础教程之异常详解
2019/01/10 Python
Python提取转移文件夹内所有.jpg文件并查看每一帧的方法
2019/06/27 Python
keras 实现轻量级网络ShuffleNet教程
2020/06/19 Python
Python实现自动签到脚本功能
2020/08/20 Python
使用html5新特性轻松监听任何App自带返回键的示例
2018/03/13 HTML / CSS
捐款倡议书范文
2014/02/02 职场文书
主管会计岗位责任制
2014/02/10 职场文书
2014两会学习心得:榜样精神伴我行
2014/03/17 职场文书
住宅使用说明书
2014/05/09 职场文书
兵马俑的导游词
2015/02/02 职场文书
英文版辞职信
2015/02/28 职场文书
唐山大地震的观后感
2015/06/05 职场文书
飞越疯人院观后感
2015/06/09 职场文书
爱国电影观后感
2015/06/19 职场文书
golang在GRPC中设置client的超时时间
2021/04/27 Golang
MySQL 全文检索的使用示例
2021/06/07 MySQL
Java 超详细讲解IO操作字节流与字符流
2022/03/25 Java/Android