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 相关文章推荐
Node.js入门教程:在windows和Linux上安装配置Node.js图文教程
Aug 14 Javascript
javascript实现根据iphone屏幕方向调用不同样式表的方法
Jul 13 Javascript
JavaScript实现模仿桌面窗口的方法
Jul 18 Javascript
全面解析Bootstrap手风琴效果
Apr 17 Javascript
Jquery Easyui日历组件Calender使用详解(23)
Dec 18 Javascript
JavaScript数据结构中栈的应用之表达式求值问题详解
Apr 11 Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
Jun 02 jQuery
form表单序列化详解(推荐)
Aug 15 Javascript
在Vue组件化中利用axios处理ajax请求的使用方法
Aug 25 Javascript
AngualrJs清除定时器遇到的坑
Oct 13 Javascript
Vue精简版风格概述
Jan 30 Javascript
Vue利用History记录上一页面的数据方法实例
Nov 02 Javascript
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的无限分类实现想法~
2007/01/02 PHP
php存储过程调用实例代码
2013/02/03 PHP
php启用zlib压缩文件的配置方法
2013/06/12 PHP
PHP使用Redis替代文件存储Session的方法
2017/02/15 PHP
JS面向对象、prototype、call()、apply()
2009/05/14 Javascript
JavaScript 创建对象
2009/07/17 Javascript
基于jquery实现的鼠标拖拽元素复制并写入效果
2011/08/23 Javascript
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
js css 实现遮罩层覆盖其他页面元素附图
2014/09/22 Javascript
创建js对象和js类的方法汇总
2014/12/24 Javascript
基于d3.js实现实时刷新的折线图
2016/08/03 Javascript
JS点击某个图标或按钮弹出文件选择框的实现代码
2016/09/27 Javascript
浅谈javascript中的三种弹窗
2016/10/21 Javascript
Bootstrap实现提示框和弹出框效果
2017/01/11 Javascript
详解Javascript百度地图接口开发文档中的类和方法
2017/02/07 Javascript
JavaScript输出所选择起始与结束日期的方法
2017/07/12 Javascript
详解webpack3如何正确引用并使用jQuery库
2017/08/26 jQuery
详解redis在nodejs中的应用
2018/05/02 NodeJs
用原生 JS 实现 innerHTML 功能实例详解
2019/04/03 Javascript
中高级前端必须了解的JS中的内存管理(推荐)
2019/07/04 Javascript
layui table表格数据的新增,修改,删除,查询,双击获取行数据方式
2019/11/14 Javascript
Python中使用Queue和Condition进行线程同步的方法
2016/01/19 Python
利用pyinstaller将py文件打包为exe的方法
2018/05/14 Python
Django框架文件上传与自定义图片上传路径、上传文件名操作分析
2019/05/10 Python
Python交互式图形编程的实现
2019/07/25 Python
python的re模块使用方法详解
2019/07/26 Python
python3 enum模块的应用实例详解
2019/08/12 Python
如何使用Django Admin管理后台导入CSV
2020/11/06 Python
html5中svg canvas和图片之间相互转化思路代码
2014/01/24 HTML / CSS
意大利火车票和铁路通行证专家:ItaliaRail
2019/01/22 全球购物
应用心理学个人的求职信
2013/12/08 职场文书
警察先进个人事迹材料
2014/05/16 职场文书
常住证明范本
2015/06/23 职场文书
班级班风口号大全
2015/12/25 职场文书
SQL基础的查询语句
2021/11/11 MySQL
剑指Offer之Java算法习题精讲二叉树专项训练
2022/03/21 Java/Android