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 相关文章推荐
ExtJS扩展 垂直tabLayout实现代码
Jun 21 Javascript
js css样式操作代码(批量操作)
Oct 09 Javascript
JS中的异常处理方法分享
Dec 22 Javascript
jQuery的promise与deferred对象在异步回调中的作用
May 03 Javascript
jQuery加密密码到cookie的实现代码
Apr 18 jQuery
详解react-webpack2-热模块替换[HMR]
Aug 03 Javascript
Vue中自定义全局组件的实现方法
Dec 08 Javascript
微信小程序使用request网络请求操作实例
Dec 15 Javascript
详解ES6中的代理模式——Proxy
Jan 08 Javascript
Vue + Element UI图片上传控件使用详解
Aug 20 Javascript
jqGrid表格底部汇总、合计行footerrow处理
Aug 21 Javascript
JSX在render函数中的应用详解
Sep 04 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的Yii框架中日志的相关配置及使用
2015/12/08 PHP
PHP new static 和 new self详解
2017/02/19 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
2017/07/27 PHP
网页防止tab键的使用快速解决方法
2013/11/07 Javascript
IE6已终止操作问题的2种情况及解决
2014/04/23 Javascript
基于jquery实现的可编辑下拉框实现代码
2014/08/02 Javascript
Nodejs极简入门教程(三):进程
2014/10/27 NodeJs
Jquery实现弹性滑块滑动选择数值插件
2015/08/08 Javascript
js带前后翻页的图片切换效果代码分享
2015/09/08 Javascript
jQuery实现图片轮播特效代码分享
2015/09/15 Javascript
JavaScript通过使用onerror设置默认图像显示代替alt
2016/03/01 Javascript
JS实现table表格固定表头且表头随横向滚动而滚动
2017/10/26 Javascript
使用Vue自定义数字键盘组件(体验度极好)
2017/12/19 Javascript
vue组件定义,全局、局部组件,配合模板及动态组件功能示例
2019/03/19 Javascript
js中火星坐标、百度坐标、WGS84坐标转换实现方法示例
2020/03/02 Javascript
node.js 如何监视文件变化
2020/09/01 Javascript
浅谈Ant Design Pro 菜单自定义 icon
2020/11/17 Javascript
[03:58]兄弟们,回来开黑了!DOTA2昔日战友招募宣传视频
2016/07/17 DOTA
Python socket网络编程TCP/IP服务器与客户端通信
2017/01/05 Python
浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
2019/10/25 Python
python多线程案例之多任务copy文件完整实例
2019/10/29 Python
Tensorflow 实现分批量读取数据
2020/01/04 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
2020/03/09 Python
HTML5 Notification(桌面提醒)功能使用实例
2014/03/17 HTML / CSS
使用HTML5 Geolocation实现一个距离追踪器
2018/04/09 HTML / CSS
小程序瀑布流解决左右两边高度差距过大的问题
2019/02/20 HTML / CSS
捷克建筑材料网上商店:DEK.cz
2021/03/06 全球购物
汉语言文学毕业生求职信
2013/10/01 职场文书
高中毕业生自我鉴定例文
2013/12/29 职场文书
顶碗少年教学反思
2014/02/21 职场文书
运动会的口号
2014/06/09 职场文书
乡镇2014法制宣传日活动总结
2014/11/01 职场文书
2014年镇党建工作汇报材料
2014/11/02 职场文书
师德先进个人事迹材料
2014/12/19 职场文书
聘用合同范本
2015/09/21 职场文书
Golang 如何实现函数的任意类型传参
2021/04/29 Golang