全网整合营销服务商

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

免费咨询热线: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 


相关文章: 建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  代购小票制作网站有哪些,购物小票的简要说明?  东莞专业制作网站的公司,东莞大学生网的网址是什么?  如何在宝塔面板中修改默认建站目录?  网站制作说明怎么写,简述网页设计的流程并说明原因?  如何通过商城自助建站源码实现零基础高效建站?  如何快速搭建个人网站并优化SEO?  专业网站建设制作报价,网页设计制作要考什么证?  如何快速搭建安全的FTP站点?  深圳企业网站制作设计,在深圳如何网上全流程注册公司?  浅析上传头像示例及其注意事项  5种Android数据存储方式汇总  定制建站是什么?如何实现个性化需求?  常州企业网站制作公司,全国继续教育网怎么登录?  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  ,柠檬视频怎样兑换vip?  如何快速查询域名建站关键信息?  企业网站制作公司网页,推荐几家专业的天津网站制作公司?  如何确认建站备案号应放置的具体位置?  制作门户网站的参考文献在哪,小说网站怎么建立?  已有域名和空间如何快速搭建网站?  建站上市公司网站建设方案与SEO优化服务定制指南  css网站制作参考文献有哪些,易聊怎么注册?  Android自定义listview布局实现上拉加载下拉刷新功能  ,怎么用自己头像做动态表情包?  番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?  如何在万网主机上快速搭建网站?  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  如何通过wdcp面板快速创建网站?  教学论文网站制作软件有哪些,写论文用什么软件 ?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  深圳网站制作培训,深圳哪些招聘网站比较好?  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  如何彻底删除建站之星生成的Banner?  如何使用Golang table-driven基准测试_多组数据测量函数效率  微信h5制作网站有哪些,免费微信H5页面制作工具?  婚礼视频制作网站,学习*后期制作的网站有哪些?  山东云建站价格为何差异显著?  完全自定义免费建站平台:主题模板在线生成一站式服务  建站之星如何快速更换网站模板?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  ,南京靠谱的征婚网站?  一键网站制作软件,义乌购一件代发流程?  制作企业网站建设方案,怎样建设一个公司网站?  建站VPS配置与SEO优化指南:关键词排名提升策略  建站主机服务器选购指南:轻量应用与VPS配置解析  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  ,石家庄四十八中学官网?  大连 网站制作,大连天途有线官网? 

您的项目需求

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