Vue3 使用 getCurrentInstance 在 production 環境中不能使用 ctx ?

因為目前只比較常用 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: "加值成功" });

學習程式原來可以這麼簡單:六角學院線上課程

初學者如何成為vue前端工程師:查看課程內容

---------------------------

| 軟體開發 | 網站建置 | 網頁系統 | 資料庫網站 |

| 客製化網站 (報名系統、投票系統、掛號系統...) |

| 前後端技術合作 |

歡迎與我們聯繫:jessica@penueling.com

加入Line立即聊聊:@539mjyid

0
0 回復

發表評論

Want to join the discussion?
Feel free to contribute!

發佈留言

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