vue3中全局挂载和获取的方式

阅读数:247 评论数:0

跳转到新版页面

分类

html/css/js

正文

一、在main.js挂载

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import Antd from 'ant-design-vue';
import 'ant-design-vue/dist/antd.css';
import 'default-passive-events'
import Axios from 'axios';
const golBalTest = () =>{
    console.log('测试全局挂载');
  return '测试全局挂载';
}
const app = createApp(App) 
// 挂载到vue原型上(方法1)
app.config.globalProperties.$axios = Axios;
app.config.globalProperties.$golBalTest = golBalTest;
app.config.globalProperties.$Test = "我在全局";
// 方法2
app.provide('root','root测试')
app.use(Antd);
app.use(store).use(router).mount('#app')

二、子组件中使用

<template>
  <div>
    <!-- {{ $Test }}
    {{ $golBalTest() }} -->
    <p>root:{{ root }}</p>
    <ul v-for="(item, index) in dataList" :key="index">
      <li>{{ item.title }}</li>
    </ul>
  </div>
</template>

<script>
import { reactive, ref, onMounted, inject, getCurrentInstance } from "vue";
import Axios from "axios";
export default {
  name: "axios",
  setup(props, context) {
    let { attrs, slots, emit } = context;
    // console.log("props", props);
    // console.log("attrs", attrs);
    const { proxy } = getCurrentInstance();
    console.log("proxy", proxy.$axios);
    let dataList = ref([]);
    let root = inject("root");
    onMounted(() => {
      proxy.$axios
        .get(
          "http://vueshop.glbuys.com/api/home/category/menu?token=1ec949a15fb709370f"
        )
        .then((res) => {
          console.log("res", res);
          if (res.data.code == 200) {
            dataList.value = res.data.data;
          }
        });
    });
    return {
      dataList,
      root,
    };
  },
};
</script>
<style scoped lang='scss'>
</style>



相关推荐

一、生命周期 1、vue2生命周期 beforeCreate #实例初始化之后,进行数据侦听和事件/侦听器的配置之前同步调用 created #实例创建完成后被立即同步调用 beforeMount #

一、使用pnpm新建项目 可以使用npm 或yarn或pnpm来初始化Vite项目 pnpm create vite xxx(项目名称) #选择vue #选择js cd xxx (进入项目目录) #安

一、概述 <script setup> 是在单文件组件(SFC)中使用组合式API的编译时语法糖,解决Vue3.0中setup需要频繁将声明的变量、函数以及import引入的内容通过return向外

一、概述 在vue2中,data函数里返回的值直接为响应式,但在vue3中我们需要使用一些函数才能达到这个效果。 setup函数中拿不到vue的this。 二、常用函数 <template> <d

<script> export default { setup() { const func1= () => { console.log("func1");

缓存页面主要Jul为了防止重复渲染dom,减少加载时间及性能消耗,提高用户体验。 一、旧版的语法 <keep-alive> <router-view v-if="$route.meta.kee

一、概述 在vue3中没有$refs这个对象,可以使用如下方法 <template> <div><input type="text" ref="txt1" value="hello" /></div>

方式一、全局引入 全局引入element之后事,element已经在app.config.globalProperties添加了全局方法$message,所以可以在组件中直接使用。 方式二、按需引入

一、useRouter传参的方式 1、隐匿传参params import { useRouter } from 'vue-router' export default { setup() {

方案一: 使用app.config.globalProperties. // 初始化相关 import { createApp } from 'vue' import { nextTick } fro