因為目前只比較常用 Elementui-plus ,要使用他的 message api ,vue2 我們可以直接用 this.$message去拿他全局註冊的方法,但vue3 沒有this啊!所以就要用 getCurrentInstance 這個 funciton 拿到全局註冊的方法。

 

我原本的用法

import { getCurrentInstance } from "vue";
//...

setup() {
    const { ctx } = getCurrentInstance();
}

//...

ctx.$message({ type: "success", message: "加值成功" });

但是這樣我發現一個問題,那就是我在開發環境一切都正常,但是在生產環境竟然就找不到$message這個方法了!!

上網查了一下,有些大神說建議不要用ctx誒~~ 因為開發(development)環境跟生產(production)環境的ctx會不一樣,要就用proxy

 

最後解法

import { getCurrentInstance } from "vue";
//...

setup() {
    const { proxy } = getCurrentInstance();
}

//...

proxy.$message({ type: "success", message: "加值成功" });
0
0 回復

發表評論

想要加入討論嗎?
請盡情發表您的想法!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。