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 相关文章推荐
基于JQuery的asp.net树实现代码
Nov 30 Javascript
jQuery 过滤not()与filter()实例代码
May 10 Javascript
php 中序列化和json使用介绍
Jul 08 Javascript
javascript事件冒泡详解和捕获、阻止方法
Apr 12 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
Jul 08 Javascript
JS实现仿百度文库评分功能
Jan 12 Javascript
jquery手机触屏滑动拼音字母城市选择器的实例代码
Dec 11 jQuery
JS中this的指向以及call、apply的作用
May 06 Javascript
js序列化和反序列化的使用讲解
Jan 19 Javascript
React 父子组件通信的实现方法
Dec 05 Javascript
如何使用webpack打包一个库library的方法步骤
Dec 18 Javascript
详解为element-ui的Select和Cascader添加弹层底部操作按钮
Feb 07 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作的文本留言本的例子(五)
2006/10/09 PHP
THINKPHP+JS实现缩放图片式截图的实现
2010/03/07 PHP
php中文验证码实现示例分享
2014/01/12 PHP
php使用ob_start()实现图片存入变量的方法
2014/11/14 PHP
php图片的二进制转换实现方法
2014/12/15 PHP
php数组键名技巧小结
2015/02/17 PHP
thinkPHP3.x常量整理(预定义常量/路径常量/系统常量)
2016/05/20 PHP
JQuery 小练习(实例代码)
2009/08/07 Javascript
判断控件是否已加载完成的代码
2010/02/24 Javascript
jquery使用append(content)方法注意事项分享
2014/01/06 Javascript
轻松创建nodejs服务器(10):处理上传图片
2014/12/18 NodeJs
jquery实现Ctrl+Enter提交表单的方法
2015/07/21 Javascript
js继承实现方法详解
2016/12/16 Javascript
基于JavaScript实现图片剪切效果
2017/03/07 Javascript
javascript按钮禁用和启用的效果实例代码
2017/10/29 Javascript
轻松理解vue的双向数据绑定问题
2017/10/30 Javascript
JS 音频可视化插件Wavesurfer.js的使用教程
2018/10/31 Javascript
js中事件对象和事件委托的介绍
2019/01/21 Javascript
更强大的vue ssr实现预取数据的方式
2019/07/19 Javascript
javascript中可能用得到的全部的排序算法
2020/03/05 Javascript
vue单应用在ios系统中实现微信分享功能操作
2020/09/07 Javascript
Python OS模块常用函数说明
2015/05/23 Python
Python常用库推荐
2016/12/04 Python
python2.7到3.x迁移指南
2018/02/01 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
2019/04/03 Python
django 消息框架 message使用详解
2019/07/22 Python
浅谈SciPy中的optimize.minimize实现受限优化问题
2020/02/29 Python
Python json模块与jsonpath模块区别详解
2020/03/05 Python
Python 解析简单的XML数据
2020/07/24 Python
Python 转移文件至云对象存储的方法
2021/02/07 Python
深圳-东方伟业笔试部分
2015/02/11 面试题
工程索赔意向书
2014/08/30 职场文书
毕业证代领委托书
2014/09/26 职场文书
倡议书格式及范文
2015/04/29 职场文书
贷款收入证明范本
2015/06/12 职场文书
python 提取html文本的方法
2021/05/20 Python