当前位置:首页 > VUE

vue实现发送值接受值

2026-01-12 07:12:03VUE

Vue 实现父子组件传值

父组件向子组件传值(Props)

在父组件中通过 v-bind 或简写 : 传递数据给子组件。子组件通过 props 接收数据。

父组件代码示例:

<template>
  <ChildComponent :message="parentMessage" />
</template>

<script>
import ChildComponent from './ChildComponent.vue';

export default {
  components: { ChildComponent },
  data() {
    return {
      parentMessage: 'Hello from Parent'
    };
  }
};
</script>

子组件代码示例:

<template>
  <div>{{ message }}</div>
</template>

<script>
export default {
  props: {
    message: {
      type: String,
      required: true
    }
  }
};
</script>

子组件向父组件传值(自定义事件)

子组件通过 $emit 触发自定义事件,父组件通过 v-on 或简写 @ 监听事件并接收数据。

子组件代码示例:

<template>
  <button @click="sendMessage">Send Message</button>
</template>

<script>
export default {
  methods: {
    sendMessage() {
      this.$emit('message-sent', 'Hello from Child');
    }
  }
};
</script>

父组件代码示例:

<template>
  <ChildComponent @message-sent="handleMessage" />
  <div>{{ receivedMessage }}</div>
</template>

<script>
import ChildComponent from './ChildComponent.vue';

export default {
  components: { ChildComponent },
  data() {
    return {
      receivedMessage: ''
    };
  },
  methods: {
    handleMessage(msg) {
      this.receivedMessage = msg;
    }
  }
};
</script>

使用 Vuex 进行状态管理

对于跨组件或复杂状态管理,可以使用 Vuex 集中管理状态。

vue实现发送值接受值

安装 Vuex

npm install vuex

创建 Store

import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

export default new Vuex.Store({
  state: {
    sharedMessage: ''
  },
  mutations: {
    setMessage(state, payload) {
      state.sharedMessage = payload;
    }
  },
  actions: {
    updateMessage({ commit }, message) {
      commit('setMessage', message);
    }
  }
});

组件中使用 Vuex

<template>
  <div>
    <button @click="updateMessage('New Message')">Update Message</button>
    <div>{{ sharedMessage }}</div>
  </div>
</template>

<script>
import { mapState, mapActions } from 'vuex';

export default {
  computed: {
    ...mapState(['sharedMessage'])
  },
  methods: {
    ...mapActions(['updateMessage'])
  }
};
</script>

使用 Event Bus 进行非父子组件通信

对于没有直接关系的组件,可以创建一个 Event Bus 来实现通信。

创建 Event Bus

vue实现发送值接受值

// event-bus.js
import Vue from 'vue';
export const EventBus = new Vue();

发送事件

import { EventBus } from './event-bus.js';

EventBus.$emit('message-event', 'Hello from Component A');

接收事件

import { EventBus } from './event-bus.js';

EventBus.$on('message-event', message => {
  console.log(message);
});

使用 provide/inject 进行深层组件传值

对于深层嵌套的组件,可以使用 provideinject 来传递数据。

祖先组件提供数据

<script>
export default {
  provide() {
    return {
      providedMessage: 'Message from Ancestor'
    };
  }
};
</script>

后代组件注入数据

<script>
export default {
  inject: ['providedMessage'],
  created() {
    console.log(this.providedMessage);
  }
};
</script>

标签: vue
分享给朋友:

相关文章

vue实现年历

vue实现年历

Vue 实现年历的方法 使用 Vue 实现年历可以通过组件化开发方式,结合日期计算和动态渲染完成。以下是两种常见的实现方式: 基于原生 Vue 的日历组件 创建 Calendar.vue 组件文件,…

vue实现多级表头

vue实现多级表头

Vue 实现多级表头的方法 使用 el-table 组件 Element UI 的 el-table 组件支持多级表头的实现,通过嵌套 el-table-column 即可完成。 <el-ta…

vue怎么实现页面返回

vue怎么实现页面返回

Vue 实现页面返回的方法 在 Vue 中实现页面返回功能,可以通过以下几种方式完成,具体取决于项目使用的路由模式和技术栈。 使用 Vue Router 的编程式导航 通过 this.$route…

用vue实现搜索查询

用vue实现搜索查询

实现搜索查询的基本思路 在Vue中实现搜索查询功能通常涉及以下几个核心部分:数据绑定、事件监听、过滤逻辑和UI反馈。以下是一个完整的实现方案。 数据绑定与输入框 创建一个Vue组件,包含一个输入框…

vue实现滚动截屏

vue实现滚动截屏

实现滚动截屏的基本思路 滚动截屏通常指对超出可视区域的长页面进行完整截图。在Vue中,可以通过结合DOM操作、Canvas绘制及第三方库实现。以下是具体方法: 使用html2canvas库实现 安装…

vue实现双折线图

vue实现双折线图

实现双折线图的步骤 安装必要的依赖库(如 ECharts 或 Chart.js),这里以 ECharts 为例: npm install echarts --save 在 Vue 组件中引入 EC…