LinHaiBlog

导航

Vue中定义全局可以使用的变量和方法

关键词: 【全局方法】 【全局变量】 【全局可用】

  • 方法一 和 方法二 适用于需要在所有组件中使用全局方法的情况。
  • 方法三 适用于需要在父组件中引用子组件实例并访问其数据和方法的情况。

1 方法一:直接写在 main.js + Vue.prototype 挂载

Vue2 版本

  • main.js中写入函数
Vue.prototype.$getToken = function (){
  ...
}
  • 通过 this.$getToken() 在所有组件里调用函数

Vue3 版本

  • main.js 中写入函数
const app = createApp(App);
app.config.globalProperties.$getToken = function () {
  // 实现你的逻辑
};
app.mount('#app');
  • 通过 this.$getToken() 在所有组件里调用函数

2 方法二: exports 暴露 + main.js 引用 + Vue.prototype 挂载

Vue2 版本

  • 写好自己需要的 use.js 文件,通过 exports 暴露
export function use(Vue, options) {
    Vue.prototype.$getToken = function (){
       ...
    };
};
  • main.js 引入并使用
import Vue from 'vue';
import { use } from './use';

Vue.use(use);
  • 通过 this.$getToken() 在所有组件里可调用函数

Vue3 版本

  • 写好自己需要的 use.js 文件,通过 exports 暴露
export function use(app, options) {

  app.config.globalProperties.$getToken = function () {
    // 实现你的逻辑
  };
}
  • 在 main.js 中引入并使用
import { createApp } from 'vue';
import App from './App.vue';
import { use } from './use';
const app = createApp(App);

use(app);

app.mount('#app');
  • 通过 this.$getToken() 在所有组件里调用函数

3 方法三:定义全局使用的 vue 组件 Global.vue + 父子组件的方式ref使用

  • 编写全局使用的 vue 组件 Global.vue
<script>
export default {
  data() {
    return {
      token: '12345678'
    };
  },
  methods: {
    getToken() {
      // 实现你的逻辑
    }
  }
};
</script>

Vue 2 版本

  • 你可以使用 ref 来引用子组件实例,并在 mounted 钩子中访问它。
<template>
  <div>
    <Global ref="globalComponent" />
  </div>
</template>

<script>
import Global from '../../components/Global';

export default {
  components: {
    Global
  },
  mounted() {
    // 访问子组件实例并调用其方法
    this.$refs.globalComponent.getToken();
  }
};
</script>

Vue 3 版本

  • 你可以使用 refonMounted 来引用子组件实例,并在组件挂载时访问它。
<template>
  <div>
    <Global ref="globalComponent" />
  </div>
</template>

<script setup>
import { ref, onMounted } from 'vue';
import Global from '../../components/Global';

// 创建一个 ref 来引用子组件实例
const globalComponent = ref(null);

onMounted(() => {
  // 访问子组件实例并调用其方法
  globalComponent.value.getToken();
});
</script>

通过这种方式,你可以在父组件中实例化 Global 组件并访问其数据和方法。

posted on 2024-09-08 21:31  林海世界  阅读(22)  评论(0编辑  收藏  举报