为什么 vue-router 使用不推荐的 getCurrentInstance?

https://github.com/vuejs/docs...
为什么 vue-router 使用不推荐的 getCurrentInstance?
为什么 vue-router 使用不推荐的 getCurrentInstance?

vue-router/src/composables/globals.js
为什么 vue-router 使用不推荐的 getCurrentInstance?

但是 vue-router 的代码依旧在使用 getCurrentInstance?
getCurrentInstance 有合适的替代方案吗?


回答:

按照鱿鱼须的原话就是:

Because the instance is an internal instance that exposes non-public APIs. Anything you use from that instance can technically break between any release types, since they are not subject to semver constraints.

同时也给出了应该如何解决问题:

I'm not sure why you need the setup context in nested composables, but explicitly passing arguments to composables make then less coupled to the consuming component, thus easier to understand and test in isolation.

In general a library designed to work with Composition API should expose special variables via its own composables (e.g. useRoute from vue-router) instead of the requiring the user to grab it from the instance.

主要还是 getCurrentInstance 是一个内部的API,并不是公开的API,使用内部API去实现一些业务功能,可能会因为后续 Vue 的版本迭代而造成业务上的 BUG。并且 Vue3Composition API 强调的就是业务的解耦和复用性,依赖组件实例属性并不是一个很好的开发方式。
vue 相关生态的使用其实就是他们内部的事情了,他们有完善的测试用例可以跑测试,但是我们并没有,如果后续的某一个版本Vue变更了这个API,那么如果没有经过完整测试就部署上去的项目就会出现大规模的BUG反馈了。

阅读更多

Unable to report missing search result · Issue #1775 · vuejs/docs
Why getCurrentInstance is descriped as anti pattern in application code? · Issue #1422 · vuejs/docs
getCurrentInstance type not correct · Issue #12596 · vuejs/vue
Vue 3: Is getCurrentInstance() deprecated? - Stack Overflow

以上是 为什么 vue-router 使用不推荐的 getCurrentInstance? 的全部内容, 来源链接: utcz.com/p/933044.html

回到顶部