美文网首页
Vue - 组件通信

Vue - 组件通信

作者: 一世长安乱 | 来源:发表于2018-04-22 11:28 被阅读0次
单层组件通信
Prop
组件实例的作用域是孤立的。这意味着不能 (也不应该) 在子组件的模板内直接引用父组件
的数据。父组件的数据需要通过 prop 才能下发到子组件中。

子组件要显式地用 props 选项声明它预期的数据

Vue.component('child', {
  // 声明 props
  props: ['message'],
  // 就像 data 一样,prop 也可以在模板中使用
  // 同样也可以在 vm 实例中通过 this.message 来使用
  template: '<span>{{ message }}</span>'
})

然后给他传一个消息

<child message="hello!"></child>
props
props 可以是数组或对象,用于接收来自父组件的数据。props 可以是简单的数组,或者
使用对象作为替代,对象允许配置高级选项,如类型检测、自定义校验和设置默认值
// 简单语法
Vue.component('props-demo-simple', {
  props: ['size', 'myMessage']
})

// 对象语法,提供校验
Vue.component('props-demo-advanced', {
  props: {
    // 检测类型
    height: Number,
    // 检测类型 + 其他验证
    age: {
      type: Number,
      default: 0,
      required: true,
      validator: function (value) {
        return value >= 0
      }
    }
  }
})

照着敲得例子

// 组件
<template id="my_div">
  <div>
    <h1>{{msg}}</h1>
    <img :src="imgsrc" alt="" width="200px">
  </div>
</template>

<script src="js/vue.js"></script>
<script>
// 1. 创建组件
Vue.component('my-div',{
  template: '#my_div',
  // vue不支持驼峰???
  props: ['msg', 'imgsrc']
});
new Vue({
  el: '#app',
  data: {

  }
});
// 传入消息
<div id="app">
    <my-div msg="今天要下雨" imgsrc="img/123.jpg"></my-div>
</div>
效果图
多层组件通信
具体实例

模板

<template id="my_img">
  <div>
    <img :src="imgsrc" width="200px" alt="">
  </div>
</template>

<template id="my_title">
  <div>
    <h2>{{title}}</h2>
  </div>
</template>

<template id="my_parent">
  <div>
    <!--动态绑定-->
    <child2 :title="imgtitle"></child2>
    <child1 :imgsrc="imgsrc"></child1>
  </div>
</template>

注册

<script src="js/vue.js"></script>
<script>
  // 子组件的实例
  let Child1 = Vue.extend({
    template: '#my_img',
    props: ['imgsrc']
  });
  let Child2 = Vue.extend({
    template: '#my_title',
    props: ['title']
  });
  Vue.component('my-parent', {
    props: ['imgtitle', 'imgsrc'],
    components: {
      'child1': Child1,
      'child2': Child2
    },
    template: '#my_parent'
  });
  new Vue({
    el: '#app',
    data: {
      title: '卧槽?!',
      img: 'img/123.jpg'
    }
  });
</script>

调用传消息

<div id="app">
  <!--动态绑定-->
  <my-parent :imgtitle="title" :imgsrc="img"></my-parent>
</div>

效果图


每个框就是个组件

相关文章

  • vue组件之间通信

    vue 组件之间通信 vue组件之间通信方式: 1.父组件通过props向下传数据给子组件,子组件通过$emit事...

  • 【Vue】组件通信(任意通信)

    本节所需的基础知识: 【Vue】组件通信(父传子props) 【Vue】组件通信(子传父$emit) 任意组件相互...

  • vue 组件通信方式 ,父子、隔代、兄弟 三类通信,六种方法

    Vue 组件间通信只要指以下 3 类通信:父子组件通信、隔代组件通信、兄弟组件通信,下面分别介绍每种通信方式且会说...

  • Vue相关知识点

    1、vue父子组件之间的通信 在vue组件通信中其中最常见通信方式就是父子组件之中的通性,而父子组件的设定方式在不...

  • Vue如何实现组件通信?

    Vue组件通信的三种情况: 父子通信 爷孙通信 兄弟通信 父子通信:父组件使用Prop向子组件传递数据,子组件通过...

  • VUE组件(传值,生命周期)

    VUE生命周期 VUE子传父组件通信 VUE非父子组件传值

  • Vue组件通信

    Vue组件通信 Vue组件关系可分为三大类: 父子组件 兄弟组件 跨级组件, 相应的组件之间的通信也分类三大类: ...

  • vue组件间通信的一些实用方法(VUE2.x)

    vue组件间通信的一些实用方法(VUE2.x) 一、父子组件间通信 常用的父子组件通信方法,一般涉及props和$...

  • vue组件通信(传值)

    1.父子通信 1.父组件(parent.vue) 子组件(child.vue) 2.子父通信 1.子组件(chil...

  • Vue组件通信

    总体来说,Vue中组件之间的通信场景如下图: 可以将其分为父子组件通信、兄弟组件通信、跨级组件通信。 1. 自定义...

网友评论

      本文标题:Vue - 组件通信

      本文链接:https://www.haomeiwen.com/subject/imvqlftx.html