全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

vue组件Prop传递数据的实现示例

组件实例的作用域是孤立的。这意味着不能(也不应该)在子组件的模板内直接引用父组件的数据。要让子组件使用父组件的数据,我们需要通过子组件的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>

输出结果:

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>


输出结果:

 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传递数据  # 组件传递数据  # vue.js组件传递数据  # vue父组件向子组件(props)传递数据的方法  # vuejs动态组件给子组件传递数据的方法详解  # vue.js组件之间传递数据的方法  # vue组件中使用props传递数据的实例详解  # vue中各组件之间传递数据的方法示例  # Vue2.x中的父组件传递数据至子组件的方法  # vue2.0 父组件给子组件传递数据的方法  # vue子组件使用自定义事件向父组件传递数据  # vue项目中做编辑功能传递数据时遇到问题的解决方法  # Vue.js组件使用props传递数据的方法  # 默认值  # 这是  # 也不  # 这意味着  # 你不  # 我们可以  # 可以看到  # 自定义  # 要让  # 不符合  # 绑定  # 为了防止  # 大家多多  # 器中  # title  # UTF  # script  # type  # lang  # head 


相关文章: 5种Android数据存储方式汇总  制作网站的软件免费下载,免费制作app哪个平台好?  网站好制作吗知乎,网站开发好学吗?有什么技巧?  广州商城建站系统开发成本与周期如何控制?  如何快速上传建站程序避免常见错误?  香港服务器选型指南:免备案配置与高效建站方案解析  建站之星安装模板失败:服务器环境不兼容?  建站上市公司网站建设方案与SEO优化服务定制指南  网站app免费制作软件,能免费看各大网站视频的手机app?  如何快速搭建二级域名独立网站?  建站之星微信建站一键生成小程序+多端营销系统  如何快速搭建安全的FTP站点?  如何在IIS7中新建站点?详细步骤解析  如何通过西部数码建站助手快速创建专业网站?  如何选择PHP开源工具快速搭建网站?  如何在Golang中指定模块版本_使用go.mod控制版本号  如何通过智能用户系统一键生成高效建站方案?  建站主机如何选?性能与价格怎样平衡?  青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?  赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?  官网网站制作腾讯审核要多久,联想路由器newifi官网  在线制作视频网站免费,都有哪些好的动漫网站?  如何在局域网内绑定自建网站域名?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  如何高效配置香港服务器实现快速建站?  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  建站主机SSH密钥生成步骤及常见问题解答?  单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?  招贴海报怎么做,什么是海报招贴?  详解jQuery停止动画——stop()方法的使用  C++时间戳转换成日期时间的步骤和示例代码  如何在景安服务器上快速搭建个人网站?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  成都网站制作公司哪家好,四川省职工服务网是做什么用?  怎么将XML数据可视化 D3.js加载XML  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  如何在万网开始建站?分步指南解析  建站org新手必看:2024最新搭建流程与模板选择技巧  金*站制作公司有哪些,金华教育集团官网?  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  建站主机助手选型指南:2025年热门推荐与高效部署技巧  建站主机服务器选型指南与性能优化方案解析  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  网站制作软件有哪些,制图软件有哪些?  建站之星Pro快速搭建教程:模板选择与功能配置指南  建站主机选虚拟主机还是云服务器更好?  陕西网站制作公司有哪些,陕西凌云电器有限公司官网?  如何快速搭建支持数据库操作的智能建站平台? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。