Vue 3:getCurrentInstance()是否过时?

mrzz3bfm  于 2023-02-13  发布在  Vue.js
关注(0)|答案(3)|浏览(453)

我在一些旧(?)文档和代码中看到了getCurrentInstance()函数的参考,但在当前Vue 3文档中找不到。
getCurrentInstance()是否已弃用?
如果是,原因是什么?(inject()就足够了?)如果不是,为什么在文档中找不到?

ep6jt1vc

ep6jt1vc1#

getCurrentInstance()已从Vue 3文档中删除,因为它是一个内部API:
因为示例是一个公开非公共API的内部示例。从技术上讲,您从该示例中使用的任何内容都可以在任何版本类型之间断开,因为它们不受永远的约束。
getCurrentInstance()最初是documented in 4-Oct-2020,但后来Vue的创建者(Evan You)在Composition API文档的一次主要重构中将其改为removed in 31-Aug-2021。尽管getCurrentInstance()已从文档中删除,但它仍然:

由于它是一个未记录的内部API,因此要谨慎使用。

eni9jsuy

eni9jsuy2#

https://github.com/vuejs/vue/issues/12596#issuecomment-1173269807
引用Evan的评论,
getCurrentInstance主要用于需要额外内部访问的官方vue库,不用于用户级应用程序代码。它被错误地记录在WIP v3文档中,但不再被视为公共API

eyh26e7m

eyh26e7m3#

VueUse库广泛使用getComponentState()来检测代码是否在组件生命周期内被调用。
例如:
https://github.com/vueuse/vueuse/blob/main/packages/shared/tryOnBeforeUnmount/index.ts
我就大胆地说,

  • "如果它对VueUse maestro antfu来说足够好,那么对我来说也足够好。"*

因此,虽然正式的deprecated,但在Vue提供isInComponentLifecycle()之类的方法之前,它仍然是必不可少的
我的建议是只将其用于这种类型的检测,并尽可能避免访问其成员。

相关问题