config.globalProperties 组件中引入报错TypeError: proxy.xxx is not a function

vue3中使用app.config.globalProperties设置全局属性

步骤:

1. 在main.js文件中配置

const app = createApp(App)
// 配置一个全局处理数据的方法
app.config.globalProperties.$filters = {
  formatNumber: (val) => {
    return val.toFixed(2)
  }
}

2. 在组件中使用

<template>
<div>
   {{ $filters.formatNumber(6666.777) }}
 </div>
</template>

在template中使用没问题

但是在setup中使用就报错

报错写法:

<script>
import { getCurrentInstance } from "vue";

export default {
  name: "user",
  setup() {

    const { proxy } = getCurrentInstance();

      console.log(1, proxy.formatNumber(6666.777));

    return {
    };
  },
};
</script>

通过打印proxy发现里面并没有 formatNumber 方法,

打印 getCurrentInstance() ,发现 appContext 中有这个方法

 

换一个写法:

<script>
import { getCurrentInstance } from "vue";

export default {
  name: "user",
  setup() {
    const { appContext } = getCurrentInstance();

      console.log(
        1,
        appContext.config.globalProperties.$filters.formatNumber(6666.777)
      );

    return {
    };
  },
};
</script>

这样就可以了

posted @ 2022-10-12 22:09  潇湘羽西  阅读(768)  评论(0编辑  收藏  举报