vue3获取当前组件实例的 getCurrentInstance 方法

Vue3获取当前组件实例的 getCurrentInstance 方法上 ctx 生产获取不到 上面的全局方法

其实这个 ctx 就是为了便于在开发模式下通过控制台检查的,生产环境,无法获取全局上挂载的方法。不要依赖 ctx 方法去获取组件实例来完成一些主要功能,否则在项目打包后会报错。解决办法是用proxy代替ctx.

代码如下

vue组件中调用全局方法

import { getCurrentInstance } from "vue";
  setup() {
    const state = reactive({
		proxy:null
	})
	onMounted(() => {
	  const { proxy } = getCurrentInstance();
	  let temp = proxy.getDate(0); //调用全局方法
	  console.log(temp) // 模拟获取当前时间
	  state.proxy = proxy;
	});
}

全局方法

base.js

exports.install = function(Vue) {
   Vue.prototype.getDate = function(n) {
      var n = n;
      var d = new Date();
      var year = d.getFullYear();
      var mon = d.getMonth() + 1;
      var day = d.getDate();
      if (day <= n) {
          if (mon > 1) {
              mon = mon - 1;
          } else {
              year = year - 1;
              mon = 12;
          }
      }
      d.setDate(d.getDate() - n);
      year = d.getFullYear();
      mon = d.getMonth() + 1;
      day = d.getDate();
      let s =
          year +
          "-" +
          (mon < 10 ? "0" + mon : mon) +
          "-" +
          (day < 10 ? "0" + day : day);
      return s;
  };
}

希望此文章能帮助到你~~~

Logo

前往低代码交流专区

更多推荐