美文网首页Vue.js专区程序员
Vue.js父子组件和非父子组件间的传值通信

Vue.js父子组件和非父子组件间的传值通信

作者: 1b5c72c98c24 | 来源:发表于2018-09-28 17:00 被阅读30次

[toc]

父子组件的传值通信

父组件向子组件传值

  • 父组件:
<template>
    <child :message="parentMessage"></child>
</template>

data () {
    return {
        parentMessage: "this is a message from parent"
    }
}
  • 子组件:
<template>
    <p>{{message}}</p>
</template>

/* 一般形式 */
data () {
    props: ["message"]
}

/* 指定接收类型 */
data () {
    props: {
        message: {
            type: String, //接收类型
            default: "this is the default value" // 默认值
        }
    }
}

子组件向父组件传值

Note 子组件不能直接更改父组件中的内容,因此可以通过子组件触发事件来传值给父组件。

  • 父组件:
<template>
    <div class="root">
        /* 自动监听子组件注册的 getChildValue 事件*/
        <child @getChildValue="receive"></child>
        
        <p>{{valueFromChild}}</p>
    </div>
</template>

data () {
    return {
        valueFromChild: "defaultValue"
    }
},
methods: {
    receive (valueFromChild) {
        this.valueFromChild = valueFromChild
    }
}
  • 子组件:
<template>
    <button @click="sendValueToParent">click to send value to parent</button>
</template>

data () {
    return {
        childValue: 'this is child Value'
    }
},
methods: {
    sendValueToParent () {
        /* 将 childValue 传递给父组件 */
        this.$emit('getChildValue', this.childValue)
    }
}

非父子组件之间的传值通信

  1. 创建 eventBus.js
import Vue from 'vue'

var bus = new Vue()

export default bus
  1. 组件 A
<template>
    <div class="root">
        <button @click="sendMessageToB">click here to send a message to B</button>
    </div>
</template>

import eventBus from '.../eventBus.js'

data () {
    return {
        message: "message from A"
    }
},
methods: {
    sendMessageToB () {
        eventBus.$emit('transfer', this.message); 
    }
}

  1. 组件 B
<template>
    <div class="root">{{messageFromA}}</div>
</template>

import eventBus from '.../eventBus.js'

data () {
    return {
        messageFromA: "defaultValue"
    }
},
created () {
    eventBus.$on('transfer', function (message) {
        this.messageFromA = message
    })
}

相关文章

  • vue中的组件通信

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

  • vue 6种通信总结①

    常用vue通信大概有这几种方式进行: 组件间的父子之间的传值 组件间的子父之间的传值 非组件间的组件间的传值(简称...

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

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

  • 7.3.3Vue非父子间的组件通信

    非父子间的组件通信 父子链 子组件索引

  • vue第七节

    Vue里组件的通信 通信:传参、控制(A操控B做一个事件)、数据共享 模式:父子组件间、非父子组件 父组件可以将一...

  • Vue组件间通信

    Vue组件间通信 父子组间通信 通过props向子组件传值,通过事件向父级组件发送消息 通过props向子组件传值...

  • react-父子组件间通信

    React-父子组件间通信 父组件传 值 给子组件, 传 方法 给子组件 子组件接收 值 ,触发父组件的 方法

  • VUE03

    Vue组件 组件的创建 组件的指令以及事件绑定 父子组件创建 父子组件通信 兄弟组件的传值 动态组件

  • Vue.js父子组件和非父子组件间的传值通信

    [toc] 父子组件的传值通信 父组件向子组件传值 父组件: 子组件: 子组件向父组件传值 Note 子组件不能直...

  • 组件之间的传值

    组件之间的传值,包括父子组件传值,兄弟组件之间的传值,其中父子组件包括父组件向子组件传值和子组件向父组件传值,现在...

网友评论

    本文标题:Vue.js父子组件和非父子组件间的传值通信

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