vue父子组件之间通讯方式

简介: vue父子组件之间通讯方式

在Vue中,父子组件之间传值通信有多种方法,可以通过props、$emit、provide/inject等方式实现。

  1. 使用props和$emit: 父组件可以通过props向子组件传递数据,子组件通过$emit触发自定义事件将数据传递给父组件。

父组件示例:

<template>
  <div>
    <child-component :message="message" @update-message="updateMessage"></child-component>
    <p>父组件消息:{{ message }}</p>
  </div>
</template>
<script>
import ChildComponent from './ChildComponent.vue';
export default {
  data() {
    return {
      message: 'Hello',
    };
  },
  components: {
    ChildComponent,
  },
  methods: {
    updateMessage(newMessage) {
      this.message = newMessage;
    },
  },
};
</script>

子组件示例:

<template>
  <div>
    <p>子组件消息:{{ message }}</p>
    <button @click="changeMessage">改变消息</button>
  </div>
</template>
<script>
export default {
  props: ['message'],
  methods: {
    changeMessage() {
      this.$emit('update-message', 'New message from child component');
    },
  },
};
</script>
  1. 使用$emit触发事件: 父组件可以通过$emit触发自定义事件,子组件通过监听该事件获取父组件传递的值。

父组件示例:

<template>
  <div>
    <child-component @custom-event="handleCustomEvent"></child-component>
    <p>父组件消息:{{ message }}</p>
  </div>
</template>
<script>
import ChildComponent from './ChildComponent.vue';
export default {
  data() {
    return {
      message: '',
    };
  },
  components: {
    ChildComponent,
  },
  methods: {
    handleCustomEvent(newMessage) {
      this.message = newMessage;
    },
  },
};
</script>

子组件示例:

<template>
  <div>
    <button @click="emitCustomEvent">传递消息</button>
  </div>
</template>
<script>
export default {
  methods: {
    emitCustomEvent() {
      this.$emit('custom-event', 'New message from child component');
    },
  },
};
</script>
  1. 使用provide/inject: 父组件可以通过provide提供数据,子组件通过inject注入获取父组件传递的数据。

父组件示例:

<template>
  <div>
    <child-component></child-component>
  </div>
</template>
<script>
import ChildComponent from './ChildComponent.vue';
export default {
  provide: {
    message: 'Hello',
  },
  components: {
    ChildComponent,
  },
};
</script>

子组件示例:

<template>
  <div>
    <p>子组件消息:{{ message }}</p>
  </div>
</template>
<script>
export default {
  inject: ['message'],
};
</script>

这些方法都可以实现父子组件之间的传值通信,根据具体的业务需求,选择合适的方法即可。

目录
相关文章
|
11天前
|
JavaScript 关系型数据库 MySQL
基于VUE的校园二手交易平台系统设计与实现毕业设计论文模板
基于Vue的校园二手交易平台是一款专为校园用户设计的在线交易系统,提供简洁高效、安全可靠的二手商品买卖环境。平台利用Vue框架的响应式数据绑定和组件化特性,实现用户友好的界面,方便商品浏览、发布与管理。该系统采用Node.js、MySQL及B/S架构,确保稳定性和多功能模块设计,涵盖管理员和用户功能模块,促进物品循环使用,降低开销,提升环保意识,助力绿色校园文化建设。
|
1月前
|
JavaScript API 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
1月前
|
JavaScript 前端开发 开发者
Vue是如何劫持响应式对象的
Vue是如何劫持响应式对象的
32 1
|
1月前
|
JavaScript 前端开发 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
1月前
|
存储 JavaScript 前端开发
介绍一下Vue的核心功能
介绍一下Vue的核心功能
|
JavaScript
Vue父子组件传值(porvide+inject实现组件通信)
如果我们需要把父组件的值传递给子组件,而且子组件可能存在层层嵌套,那么就可以使用provide+inject的方法来实现组件之间的通信
195 0
Vue父子组件传值(porvide+inject实现组件通信)
|
JavaScript 前端开发
前端-vue基础63-非父子组件传值
前端-vue基础63-非父子组件传值
97 0
前端-vue基础63-非父子组件传值
|
JavaScript
Vue父子组件传值通讯,超详细注释
Vue父子组件传值通讯,超详细注释
246 0

热门文章

最新文章