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 相关文章推荐
js的with语句使用方法
Sep 21 Javascript
javascript温习的一些笔记 基础常用知识小结
Jun 22 Javascript
js使浏览器窗口最大化实现代码(适用于IE)
Aug 07 Javascript
jQuery :first选择器使用介绍
Aug 09 Javascript
浅谈Javascript 数组与字典
Jan 29 Javascript
功能强大的Bootstrap使用手册(一)
Aug 02 Javascript
Bootstrap布局之栅格系统学习笔记
May 04 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
Dec 19 Javascript
详解React Native 屏幕适配(炒鸡简单的方法)
Jun 11 Javascript
微信小程序系列之自定义顶部导航功能
May 21 Javascript
JavaScript实现抖音罗盘时钟
Oct 11 Javascript
jQuery实现移动端下拉展现新的内容回弹动画
Jun 24 jQuery
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在获取指定目录下的目录,在获取的目录下面再创建文件,多平台
2011/08/03 PHP
使用PHP编写的SVN类
2013/07/18 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
2019/03/11 PHP
js 变量类型转换常用函数与代码[比较全]
2009/12/01 Javascript
javascript replace()正则替换实现代码
2010/02/26 Javascript
IE6、IE7中获取Button元素的值的bug说明
2011/08/28 Javascript
jq选项卡鼠标延迟的插件实例
2013/05/13 Javascript
使用非html5实现js板连连看游戏示例代码
2013/09/22 Javascript
jquery垂直公告滚动实现代码
2013/12/08 Javascript
js(JavaScript)实现TAB标签切换效果的简单实例
2014/02/26 Javascript
JSON字符串转JSON对象
2015/07/31 Javascript
学习JavaScript设计模式(继承)
2015/11/26 Javascript
javascript截图 jQuery插件imgAreaSelect使用详解
2016/05/04 Javascript
数据结构中的各种排序方法小结(JS实现)
2016/07/23 Javascript
JavaScript中this的用法及this在不同应用场景的作用解析
2017/04/13 Javascript
JS声明对象时属性名加引号与不加引号的问题及解决方法
2018/02/16 Javascript
微信小程序仿朋友圈发布动态功能
2018/07/15 Javascript
vue中引用swiper轮播插件的教程详解
2018/08/16 Javascript
Vue实现根据hash高亮选项卡
2019/05/27 Javascript
node学习笔记之读写文件与开启第一个web服务器操作示例
2019/05/29 Javascript
Python实现针对中文排序的方法
2017/05/09 Python
python使用PyCharm进行远程开发和调试
2017/11/02 Python
python实现发送邮件功能代码
2017/12/14 Python
python机器学习之神经网络实现
2018/10/13 Python
Python删除n行后的其他行方法
2019/01/28 Python
python通过nmap扫描在线设备并尝试AAA登录(实例代码)
2019/12/30 Python
Python在后台自动解压各种压缩文件的实现方法
2020/11/10 Python
Python3+SQLAlchemy+Sqlite3实现ORM教程
2021/02/16 Python
纯CSS3大转盘抽奖示例代码(响应式、可配置)
2017/01/13 HTML / CSS
HTML5的结构和语义(2):结构
2008/10/17 HTML / CSS
解决html5中video标签无法播放mp4问题的办法
2017/05/07 HTML / CSS
Becextech新西兰:数码单反相机和手机在线商店
2018/04/27 全球购物
简述进程的启动、终止的方式以及如何进行进程的查看
2014/02/20 面试题
网上书店创业计划书
2014/01/12 职场文书
怎样写离婚协议书
2014/09/10 职场文书
导游词之镇江焦山
2019/11/21 职场文书