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 复杂的嵌套环境中输出单引号和双引号
May 26 Javascript
理解Javascript_10_对象模型
Oct 16 Javascript
Google 静态地图API实现代码
Nov 19 Javascript
原生javascript实现图片弹窗交互效果
Jan 12 Javascript
jQuery使用CSS()方法给指定元素同时设置多个样式
Mar 26 Javascript
JS动态改变表格边框宽度的方法
Mar 31 Javascript
jQuery实现在下拉列表选择时获取json数据的方法
Apr 16 Javascript
详解前后端分离之VueJS前端
May 24 Javascript
vue实现瀑布流组件滑动加载更多
Mar 10 Javascript
在vue中使用console.log无效的解决
Aug 09 Javascript
关于angular引入ng-zorro的问题浅析
Sep 09 Javascript
vue 单页应用和多页应用的优劣
Oct 22 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
Win2000+Apache+MySql+PHP4+PERL安装使用小结
2006/10/09 PHP
自定义min版smarty模板引擎MinSmarty.class.php文件及用法
2016/05/20 PHP
深入理解PHP之OpCode原理详解
2016/06/01 PHP
解决php扩展安装不生效问题
2019/10/25 PHP
jquery attr 设定src中含有&amp;(宏)符号问题的解决方法
2011/07/26 Javascript
Javascript insertAfter() 实现函数代码
2011/10/12 Javascript
jQuery News Ticker 基于jQuery的即时新闻行情展示插件
2011/11/05 Javascript
JQuery实现绚丽的横向下拉菜单
2013/12/19 Javascript
从零学jquery之如何使用回调函数
2014/05/16 Javascript
javascript实现图像循环明暗变化的方法
2015/02/25 Javascript
js光标定位文本框回车表单提交问题的解决方法
2015/05/11 Javascript
javascript实现Table间隔色以及选择高亮(和动态切换数据)的方法
2015/05/14 Javascript
JS实现选择TextArea内文本的方法
2015/08/03 Javascript
jQuery横向擦除焦点图特效代码分享
2015/09/06 Javascript
jQuery链式调用与show知识浅析
2016/05/11 Javascript
Javascript闭包与函数柯里化浅析
2016/06/22 Javascript
大型JavaScript应用程序架构设计模式
2016/06/29 Javascript
功能强大的Bootstrap使用手册(一)
2016/08/02 Javascript
轻松掌握JavaScript状态模式
2016/09/07 Javascript
如何理解jQuery中的ajaxSubmit方法
2017/03/13 Javascript
解决easyui日期时间框ie的兼容的问题
2018/03/01 Javascript
jQuery实现的淡入淡出与滑入滑出效果示例
2018/04/18 jQuery
JS函数进阶之prototy用法实例分析
2020/01/15 Javascript
微信小程序向Java后台传输参数的方法实现
2020/12/10 Javascript
python爬虫实现教程转换成 PDF 电子书
2017/02/19 Python
有趣的python小程序分享
2017/12/05 Python
Python获取二维矩阵每列最大值的方法
2018/04/03 Python
Python3 文章标题关键字提取的例子
2019/08/26 Python
关于keras中keras.layers.merge的用法说明
2020/05/23 Python
python根据字典的键来删除元素的方法
2020/08/16 Python
CSS+jQuery实现的在线答题功能
2015/04/25 HTML / CSS
越南电子产品购物网站:FPT Shop
2017/12/02 全球购物
会计试用期自我评价
2015/03/10 职场文书
微信早安问候语
2015/11/10 职场文书
Nginx同一个域名配置多个项目的实现方法
2021/03/31 Servers
Anaconda安装pytorch和paddle的方法步骤
2022/04/03 Python