当前位置: 首页 > 知识库问答 >
问题:

javascript - vue3 实例 如何挂载一个新的 method 覆盖老的 method?

宋涵忍
2023-08-15

vue3

const app = createApp({    setup() {        const fn = ()=>{}        return {fn}    }  }).mount('#app')app.fn = ()=>{} // 这里我要挂载一个新函数 来覆盖 fn,如何实现?

共有1个答案

东方俊杰
2023-08-15

用 provide 和 inject

// 父组件import { provide } from 'vue';const app = createApp({  setup() {    const newFun = () => {      console.log('这是一个新的方法');    };    provide('newFun', newFun);  },}).mount('#app');// 子组件import { inject } from 'vue';export default {  setup() {    const newFun = inject('newFun');    newFun(); // 调用新的方法  },};

用app.config.globalProperties:

import { createApp } from 'vue';const app = createApp({  setup() {    //  this.newFun 调这个方法  },});app.config.globalProperties.newFun = () => {  console.log('这是一个新的方法');};app.mount('#app');

组件里:

import { defineComponent } from 'vue';export default defineComponent({  setup(props, { root }) {    // 用 root.newFun 调方法    root.newFun();  },});

可以看看这篇文章:vue3.0之全局变量app.config.globalProperties的使用

 类似资料:
  • 为什么我不能重写类中的doInBackground方法? 错误:类AttemptLogin必须声明为抽象或实现抽象方法'doInBackground(参数…)在“异步任务”中 如果我将doInBackground的参数更改为(Object[]),它就会工作。为什么我不能传递字符串值?

  • 怎么清空被 Object.assign(form, res.data); res.data覆盖form的值,清掉res.data覆盖过来的新字段

  • 问题内容: 为什么我们不能覆盖子类中超类的实例变量? 问题答案: 因为如果您更改数据成员的实现,则很有可能会破坏超类(想象将超类的数据成员从float更改为String)。

  • 问题内容: 我有一个.net Core Web Api,其配置文件位于名为Config的文件夹下。我从中创建了图像和一个容器,并且使用终端可以正确看到该容器中包含文件夹和配置文件。 我的问题是,到目前为止,按照要求,我找不到找到将相同的容器安装/绑定Config文件夹绑定到物理路径的容器的方法: 1)将Config文件夹挂载到特定的主机位置 2)在创建容器时,Config文件夹应填充映像中的文件

  • 我不得不终止我的实例。它使用的是EBS vol。

  • 问题内容: 有没有人有过重写JavaScript函数的经验? 哪些浏览器支持此功能? 哪些浏览器版本支持此功能? 覆盖该功能有哪些危险? 问题答案: 绝对是“受支持的”。这是您的网页,您可以使用它进行任何操作。 我已经这样做了,可以在不修改库的情况下而是通过潜入事件来跟踪分析事件。 使用代理模式: 如果需要,您也可以绕过对原始函数的调用(代理)