当前位置:首页 > VUE

vue实现组件传递数据

2026-01-22 15:59:57VUE

Vue 组件间数据传递方法

Props 传递数据(父传子)
父组件通过 v-bind 向子组件传递数据,子组件通过 props 接收。
父组件示例:

<template>
  <ChildComponent :message="parentMessage" />
</template>
<script>
export default {
  data() {
    return { parentMessage: 'Hello from parent' }
  }
}
</script>

子组件示例:

<script>
export default {
  props: ['message']
}
</script>

自定义事件(子传父)
子组件通过 $emit 触发事件,父组件通过 v-on 监听。
子组件示例:

<template>
  <button @click="$emit('update', newValue)">Send</button>
</template>

父组件示例:

<template>
  <ChildComponent @update="handleUpdate" />
</template>
<script>
export default {
  methods: {
    handleUpdate(value) {
      console.log(value)
    }
  }
}
</script>

Provide/Inject(跨层级传递)
祖先组件通过 provide 提供数据,后代组件通过 inject 注入。
祖先组件示例:

<script>
export default {
  provide() {
    return { theme: 'dark' }
  }
}
</script>

后代组件示例:

<script>
export default {
  inject: ['theme']
}
</script>

Vuex/Pinia(状态管理)
适用于复杂应用全局状态共享。以 Pinia 为例:
定义 store:

import { defineStore } from 'pinia'
export const useStore = defineStore('main', {
  state: () => ({ count: 0 })
})

组件中使用:

<script setup>
import { useStore } from './store'
const store = useStore()
</script>
<template>
  {{ store.count }}
</template>

Event Bus(小型项目适用)
创建全局事件总线(Vue 2 适用):

// eventBus.js
import Vue from 'vue'
export const EventBus = new Vue()

组件 A 发送事件:

EventBus.$emit('event-name', data)

组件 B 接收事件:

EventBus.$on('event-name', data => {})

$attrs/$listeners(高阶传递)
适用于透传属性和事件。
父组件:

<Child v-bind="$attrs" v-on="$listeners" />

本地存储或 URL
通过 localStorage 或路由参数传递:

// 存储
localStorage.setItem('key', data)
// 读取
const data = localStorage.getItem('key')

注意事项

vue实现组件传递数据

  • 单向数据流:Props 应避免直接修改,推荐用事件通知父组件变更
  • 深层次嵌套优先考虑 Vuex/Pinia
  • 事件总线需注意及时销毁监听避免内存泄漏

标签: 组件数据
分享给朋友:

相关文章

vue怎么实现数据检测

vue怎么实现数据检测

Vue 数据检测的实现方式 Vue 通过响应式系统实现数据检测,核心是利用 Object.defineProperty(Vue 2)或 Proxy(Vue 3)对数据进行劫持,结合发布-订阅模式实现依…

组件elementui

组件elementui

ElementUI 简介 ElementUI 是一套基于 Vue.js 的桌面端组件库,由饿了么前端团队开发并开源。它提供了丰富的 UI 组件(如按钮、表单、表格等),适合快速构建企业级中后台产品。…

vue 实现组件刷新

vue 实现组件刷新

组件局部刷新 在Vue中实现组件刷新可以通过强制重新渲染组件来实现。常用的方法有以下几种: 使用v-if指令 通过切换v-if条件触发组件的销毁和重建 <template> <…

react如何删除组件

react如何删除组件

删除 React 组件的几种方法 条件渲染法 通过状态控制组件是否渲染。当状态为 false 时,组件会被移除: const [showComponent, setShowComponent…

vue实现递归组件

vue实现递归组件

递归组件的实现方法 在Vue中实现递归组件主要依靠组件调用自身的能力。以下是几种常见的实现方式: 使用组件name属性 通过组件的name属性实现递归调用是最简单的方式: <template…

vue组件实现vmodel

vue组件实现vmodel

Vue 组件实现 v-model 在 Vue 中,v-model 是双向数据绑定的语法糖,默认情况下绑定 value 属性并监听 input 事件。在自定义组件中实现 v-model 需要正确配置 p…