当前位置:首页 > VUE

vue实现全局共享

2026-01-19 16:57:24VUE

Vue 实现全局共享的方法

使用 Vuex 状态管理

Vuex 是 Vue 的官方状态管理库,适用于中大型应用。通过集中式存储管理所有组件的状态,实现全局共享。

安装 Vuex:

npm install vuex --save

创建 Vuex Store:

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

Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment(state) {
      state.count++
    }
  }
})

export default store

在组件中使用:

this.$store.commit('increment')
console.log(this.$store.state.count)

使用 Event Bus

Event Bus 是一个简单的全局事件系统,适用于小型应用或简单场景。

创建 Event Bus:

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

在组件中发送事件:

import { EventBus } from './event-bus.js'
EventBus.$emit('event-name', payload)

在组件中接收事件:

vue实现全局共享

import { EventBus } from './event-bus.js'
EventBus.$on('event-name', payload => {
  console.log(payload)
})

使用 Provide/Inject

Vue 的 provide/inject 特性允许祖先组件向所有子孙组件注入依赖,适用于组件层级较深的场景。

在祖先组件中提供数据:

export default {
  provide() {
    return {
      sharedData: this.sharedData
    }
  },
  data() {
    return {
      sharedData: '全局数据'
    }
  }
}

在子孙组件中注入数据:

export default {
  inject: ['sharedData'],
  mounted() {
    console.log(this.sharedData)
  }
}

使用全局混入 (Global Mixin)

全局混入可以影响每一个 Vue 实例,适用于需要为所有组件添加相同功能的场景。

定义全局混入:

vue实现全局共享

Vue.mixin({
  data() {
    return {
      globalMessage: '全局消息'
    }
  },
  methods: {
    showGlobalMessage() {
      console.log(this.globalMessage)
    }
  }
})

在任何组件中使用:

this.showGlobalMessage()

使用全局属性

Vue 3 中可以通过 app.config.globalProperties 添加全局属性,Vue 2 可以通过 Vue.prototype 实现。

Vue 3 示例:

app.config.globalProperties.$globalVar = '全局变量'

Vue 2 示例:

Vue.prototype.$globalVar = '全局变量'

在组件中使用:

console.log(this.$globalVar)

每种方法适用于不同场景,Vuex 适合复杂状态管理,Event Bus 适合简单事件通信,Provide/Inject 适合深层组件数据传递,全局混入和属性适合添加通用功能。

标签: 全局vue
分享给朋友:

相关文章

vue实现下拉层级

vue实现下拉层级

Vue实现下拉层级菜单 使用Vue实现下拉层级菜单可以通过递归组件或动态渲染的方式完成。以下是两种常见实现方法: 递归组件实现 创建一个递归组件处理多级菜单结构: <template…

vue实现导航栏切图

vue实现导航栏切图

Vue 实现导航栏切图 使用 Vue Router 实现基础导航 在 Vue 项目中,可以通过 Vue Router 实现导航栏的路由切换。创建一个导航栏组件,并在其中使用 <router-li…

vue实现下拉刷新组件

vue实现下拉刷新组件

实现下拉刷新组件的核心思路 下拉刷新功能通常通过监听触摸事件、滚动位置和动画效果实现。Vue中可以利用自定义指令或封装组件完成,以下为两种常见实现方式。 基于自定义指令的实现 创建指令监听触摸事件,…

vue前端实现下载进度

vue前端实现下载进度

实现下载进度条的基本思路 在Vue中实现下载进度条,通常需要结合XMLHttpRequest或Fetch API来监听下载进度事件。通过计算已下载数据与总数据的比例,动态更新进度条的显示。 使用X…

vue优秀实现

vue优秀实现

Vue.js 优秀实现方法 响应式数据管理 使用 Vue 的 ref 和 reactive 处理基础类型和对象类型数据,结合 computed 计算属性优化渲染性能。对于复杂状态,推荐 Pinia 替…

vue datepicker 实现

vue datepicker 实现

实现 Vue Datepicker 的基本方法 在 Vue 项目中实现日期选择功能,可以使用第三方库如 vue-datepicker 或 v-calendar。以下是两种常见实现方式: 安装 vu…