美文网首页
组件通信

组件通信

作者: lucky_yao | 来源:发表于2020-10-14 07:27 被阅读0次

父与子:
父级调用子元素,通过子元素的属性来传入数据
Vue.component('自定义组件名称',组件的内容(对象的形式))
子级内部通过props来接收对应的数据
子与父
注意:vue中数据默认是单向流动,只能父到子直接传递,但是子到父不能直接修改。
原因:因为父级的数据不一定只是某个子级在使用,也许还会有其他的子级在使用
如果子级内部可以随意修改父级的数据,很容易就会出现数据混乱

解决:如果子级想修改数据,那么需要子级去通知父级,父级接收到这个通知后,再修改
通知方法:(自定义)事件机制(监听)

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title></title>
    <script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
  </head>
  <body>
    <h3>组件之间不能相互使用数据,组件与组件之间需要相互传参</h3>
    <h4>1.声明一个全局的 Event var Event = new Vue();</h4>
    <h4>2.Event.$emit(自定义事件名,参数1,参数2...) 发送参数</h4>
    <h4>3.Event.$on(自定义事件名,()=>{}) 接收参数</h4>
    <div id="app">
      <conone></conone>
      <hr />
      <contwo></contwo>
      <hr />
      <conthree></conthree>
      <hr />
    </div>
    <template id="cone">
      <div>
        <h1>我是第一个子组件</h1>
        <button @click="sena">传参</button>
      </div>
    </template>
    <template id="ctwo">
      <div>
        <h1>我是第二个子组件</h1>
        <button @click="senb">组件三传参</button>
      </div>
    </template>
    <template id="cthree">
      <div>
        <h1>我是第三个子组件</h1>
        <p>{{ma}}</p>
        <p>{{mb}}</p>
      </div>
    </template>
  </body>
  <script type="text/javascript">
    var Event = new Vue();
    let conone = {
      data() {
        return {
          msga: "1111",
        };
      },
      methods: {
        sena() {
          // Event.$emit(自定义事件名,参数1,参数2...)  发送参数
          // Event.$on(自定义事件名,()=>{})  接收参数
          Event.$emit("geta", this.msga);
        },
      },
      template: "#cone",
    };
    let contwo = {
      data() {
        return {
          msgb: "222",
        };
      },
      methods: {
        senb() {
          Event.$emit("getb", this.msgb);
        },
      },
      template: "#ctwo",
    };
    let conthree = {
      data() {
        return {
          ma: "",
          mb: "",
        };
      },
      mounted() {
        Event.$on("geta", (a) => {
          //console.log(a);
          this.ma = a;
        });

        Event.$on("getb", (b) => {
          //console.log(b);
          this.mb = b;
        });
      },
      methods: {},
      template: "#cthree",
    };
    new Vue({
      el: "#app",
      data: {
        msg: "",
      },
      methods: {},
      components: {
        conone,
        contwo,
        conthree,
      },
    });
  </script>
</html>

相关文章

  • vue中的组件通信

    一、组件通信(组件传值) 1.1父子组件通信 1.2子父组件通信 1.3非父子组件通信(兄弟组件通信)

  • 组件通信

    组件通信分为几种: 父组件给子组件通信 子组件给父组件通信 兄弟组件通信 1.父组件给子组件通信 法一...

  • 组件通信

    组件关系 组件关系可以分为父子组件通信、兄弟组件通信、跨级组件通信。 父子组件通信 1. 子组件使用 $emit(...

  • react之组件通信

    需要组件之进行通信的几种情况: 父组件向子组件通信 子组件向父组件通信 跨级组件通信 没有嵌套关系组件之间的通信 ...

  • React组件通信的几种方式

    需要组件之进行通信的几种情况 父组件向子组件通信 子组件向父组件通信 跨级组件通信 没有嵌套关系组件之间的通信 1...

  • React中组件通信的几种方式

    需要组件之进行通信的几种情况 父组件向子组件通信 子组件向父组件通信 跨级组件通信 没有嵌套关系组件之间的通信 1...

  • React中组件通信

    需要组件之进行通信的几种情况 父组件向子组件通信 子组件向父组件通信 跨级组件通信 没有嵌套关系组件之间的通信 1...

  • 第七章 可复用性的组件详解(中)

    7.7 组件通信 组件关系可分为父子组件通信、兄弟组件通信、跨级组件通信 7.7.1 自定义事件—子组件给父组件传...

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

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

  • react 跨级组件通信

    跨级组件通信所谓跨级组件通信,就是父组件向子组件的子组件通信,向更深层的子组件通信。跨级组件通信可以采用下面两种方...

网友评论

      本文标题:组件通信

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