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

注意事项

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

vue实现组件传递数据

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

相关文章

vue实现数据

vue实现数据

Vue 实现数据绑定的方法 Vue.js 提供了多种方式实现数据绑定,包括双向绑定、单向绑定以及动态数据绑定。以下是几种常见的实现方式: 双向数据绑定(v-model) 双向数据绑定通常用于表单元素…

vue实现组件

vue实现组件

Vue 组件实现基础 Vue 组件是可复用的 Vue 实例,用于封装 UI 和逻辑。通过 .vue 文件或直接注册组件实现。 单文件组件 (SFC) 示例 <template>…

vue实现拖拽实现组件嵌套

vue实现拖拽实现组件嵌套

Vue 拖拽实现组件嵌套 使用 Vue 实现拖拽组件嵌套功能可以通过原生 HTML5 拖拽 API 或第三方库如 vuedraggable 实现。以下是两种方法的详细说明: 使用 HTML5 拖拽…

vue实现广告组件

vue实现广告组件

Vue 实现广告组件的核心方法 数据驱动的广告内容渲染 通过 props 接收广告数据(如图片URL、跳转链接等),使用 v-bind 动态绑定属性。典型结构包含 <a> 标签嵌套 <…

vue 数据绑定实现

vue 数据绑定实现

Vue 数据绑定的实现方式 Vue 的数据绑定主要通过响应式系统和模板语法实现,以下是核心方法: 双向数据绑定(v-model) 通过 v-model 指令实现表单元素与数据的双向绑定,自动同步数据…

vue实现重置表格数据

vue实现重置表格数据

重置表格数据的方法 在Vue中重置表格数据通常涉及清空或重新初始化数据绑定的数组或对象。以下是几种常见实现方式: 直接重置数据源 对于基于数组的表格数据,可以直接将数据数组重置为空或初始值:…