当前位置:首页 > 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>

后代组件示例:

vue实现组件传递数据

<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 发送事件:

vue实现组件传递数据

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')

注意事项

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

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

相关文章

vue实现组件跟随

vue实现组件跟随

实现组件跟随的常见方法 使用CSS定位 通过CSS的position: fixed或position: absolute属性实现组件跟随。需要结合JavaScript计算目标元素的位置。 &…

vue实现数据结构图

vue实现数据结构图

Vue 实现数据结构图的方法 使用第三方库 Vue 可以与多种图表库结合使用,例如 D3.js、ECharts 或 Vis.js。这些库提供了强大的图形渲染能力,适合展示复杂的数据结构图。 安装…

uniapp 数据

uniapp 数据

uniapp 数据管理方法 本地存储 使用 uni.setStorageSync 和 uni.getStorageSync 进行本地数据持久化存储。适合保存用户偏好设置或小型数据。 // 存储…

Vue数据依赖实现

Vue数据依赖实现

Vue数据依赖实现原理 Vue的数据依赖实现基于响应式系统,核心是通过Object.defineProperty或Proxy拦截数据变化,结合发布-订阅模式实现依赖收集和更新触发。 核心机制 依赖…

react组件如何通讯

react组件如何通讯

React 组件通讯方式 React 组件间的通讯方式主要包括以下几种方法,适用于不同场景下的数据传递和状态管理需求。 父子组件通讯(Props 传递) 父组件通过 props 向子组件传递数据或…

如何设计react组件

如何设计react组件

设计 React 组件的核心原则 React 组件的设计需要遵循高内聚、低耦合的原则,确保组件功能独立且易于维护。组件的设计可以分为展示组件和容器组件两类,展示组件负责 UI 渲染,容器组件负责逻辑处…