zoukankan      html  css  js  c++  java
  • vue之组件通信

    vue组件通信一般分为以下几种情况:

    1、父子组件通信;

    2、兄弟组件通信;

    3、跨多层级组件通信;

    一、父子通信

           父组件通过props传递数据给子组件,子组件通过emit发送事件传递数据给父组件。

      父组件和子组件通信

    父组件如下:

    <template>
        <div class="parent">
            <div id="app">
                <!-- 利用v-bind绑定message,即子组件中props需要写入的参数 -->
                <!-- parentMsg即数据中的键名 -->
                   <child v-bind:message="parentMsg"></child>
               </div>
        </div>
    </template>
    
    <script>
        import child from './components/Child'
        export default {
            name: "parent",
            components: {
                child
              },
              data(){
                  return{
                      parentMsg:"hello,child"
                  }
              }
        }
    </script>

    子组件如下:

    <template>
        <div class="child">
            <h2>child子组件部分</h2>
               <p>{{message}}</p>
        </div>
    </template>
    
    <script>
        export default {
            name: "child",
            props : ['message'],//子组件通过props接收参数,message即父组件中绑定的属性message
    } </script>

    子组件接收的方法有三种方式:

    第一种,直接接收:

    props: ['childCom']

    第二种,已对象的形式设置接收类型:

    props: {
        childCom: String //这里指定了字符串类型,如果类型不一致则会警告
    }

    第三种,已对象的形式设置接收类型和默认值:

    props: {
        childCom: {
            type: String,
            default: 'sichaoyun' 
        }
    }

    子组件和父组件通信

    子组件代码:

    父组件代码:

    兄弟组件通信

    兄弟组件也是使用$emit('事件名称,'需要传递的数据'),作为发送数据的一方和$on(事件名称",'回调函数') 作为接收数据的一方。

    首先在scr文件夹下,新建一个文件event.js,然后在里面新建一个vue实例。这个实例的作用就是作为兄弟组件间的桥梁,也就是中央事件中线。

    然后建两个兄弟组件,组件代码分别如下:

    兄弟组件一:

    兄弟组件二:

    接着将这两个组件引入到需要调用的组件里面,这里用app.vue为例。

    app.vue文件代码如下:

    跨多层次组件通信

    这个是在Vue 2.2版本新增的API  provide / inject    虽然文档中不推荐直接在业务中使用,但是如果用得好的话,还是很有用的。

    假设有父组件 A,然后有一个跨多层级的子组件 B

  • 相关阅读:
    SmartDb代码修改
    windows下Nginx+RTMP部署
    嵌入式linux下获取flash分区大小
    (转)Qt添加windows开机自启动
    (转)交叉编译lrzsz
    关于海思SDK在Ubuntu下安装错误问题
    电总协议串口调试助手
    使用git将本地仓库上传到远程仓库(转)
    c++中包含string成员的结构体拷贝导致的double free问题
    59. 可变参数
  • 原文地址:https://www.cnblogs.com/linjiangjin/p/10414074.html
Copyright © 2011-2022 走看看