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中string 的replace
Apr 12 Javascript
推荐一个自己用的封装好的javascript插件
Jan 29 Javascript
JavaScript对象参数的引用传递
Jan 14 Javascript
JavaScript数据结构与算法之链表
Jan 29 Javascript
基于AngularJs + Bootstrap + AngularStrap相结合实现省市区联动代码
May 30 Javascript
Node.js中的require.resolve方法使用简介
Apr 23 Javascript
写给小白看的JavaScript异步
Nov 29 Javascript
微信小程序使用progress组件实现显示进度功能【附源码下载】
Dec 12 Javascript
使用Vue自定义指令实现Select组件
May 24 Javascript
JavaScript模板引擎原理与用法详解
Dec 24 Javascript
用VueJS写一个Chrome浏览器插件的实现方法
Feb 27 Javascript
JavaScript基于SVG的图片切换效果实例代码
Dec 15 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
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
自己动手制作jquery插件之自动添加删除行功能介绍
2011/10/14 Javascript
JS实现日期加减的方法
2013/11/29 Javascript
深入解析JavaScript框架Backbone.js中的事件机制
2016/02/14 Javascript
JS检测移动端横竖屏的代码
2016/05/30 Javascript
javascript输出AscII码扩展集中的字符方法
2016/12/26 Javascript
详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件
2017/06/01 jQuery
在Vue中使用echarts的实例代码(3种图)
2017/07/10 Javascript
仿京东快报向上滚动的实例
2017/12/13 Javascript
js 实现复选框只能选择一项的示例代码
2018/01/23 Javascript
原生JS+HTML5实现跟随鼠标一起流动的粒子动画效果
2018/05/03 Javascript
javascript实现手动点赞效果
2019/04/09 Javascript
vue.js基于v-for实现批量渲染 Json数组对象列表数据示例
2019/08/03 Javascript
vant时间控件使用方法详解
2020/12/24 Javascript
python多线程threading.Lock锁用法实例
2014/11/01 Python
python基于phantomjs实现导入图片
2016/05/13 Python
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
恢复百度云盘本地误删的文件脚本(简单方法)
2017/10/21 Python
Django中cookie的基本使用方法示例
2018/02/03 Python
Python基于xlrd模块操作Excel的方法示例
2018/06/21 Python
Python中使用双下划线防止类属性被覆盖问题
2019/06/27 Python
Python类中的魔法方法之 __slots__原理解析
2019/08/26 Python
python求绝对值的三种方法小结
2019/12/04 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
2020/02/06 Python
python 高阶函数简单介绍
2021/02/19 Python
python实现杨辉三角的几种方法代码实例
2021/03/02 Python
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
土木工程毕业生推荐信
2013/10/28 职场文书
小学数学教学经验交流材料
2014/05/22 职场文书
商品陈列协议书
2014/09/29 职场文书
2015清明节祭奠英烈寄语大全
2015/03/04 职场文书
爱国主义影片观后感
2015/06/18 职场文书
如何解决springcloud feign 首次调用100%失败的问题
2021/06/23 Java/Android
Pygame如何使用精灵和碰撞检测
2021/11/17 Python
实战Python爬虫爬取酷我音乐
2022/04/11 Python
PYTHON InceptionV3模型的复现详解
2022/05/06 Python