Vue 3 composition API and access to Vue instance(Vue 3 组合 API 和对 Vue 实例的访问)
问题描述
在 main.js
我有这样的东西:
In main.js
I have something like this:
import { myUtilFunc} from './helpers';
Object.defineProperty(Vue.prototype, '$myUtilFunc', { value: myUtilFunc });
通过这种方式,我可以使用 this.$myUtilFunc
In this way I have acess to myUtilFunc
across whole application with this.$myUtilFunc
但是,如果我无法访问 this
,如何在 Vue 3 的 setup()
方法中实现相同的功能?
But how can I achieve the same in setup()
method in Vue 3 if I don't have access to this
?
推荐答案
使用provide
/inject
提供
const app = createApp(App);
app.provide('someVarName', someVar); // `Provide` a variable to all components here
注入:
// In *any* component
const { inject } = Vue;
...
setup() {
const someVar = inject('someVarName'); // injecting variable in setup
}
请注意,您不必从应用根目录提供,也可以从任何组件提供
仅向其子组件提供:
Note that you don't have to provide from the app root, but can also provide
from any component to only its sub-components:
// In *any* component
setup() {
...
},
provide() {
return {
someVarName: someVar
}
}
原答案
[编辑:虽然我下面的原始答案对 context
属性仍然有用,但不再建议使用 context.root
,指南中不再提及,可能很快被弃用.]
Original answer
[Edit: While my original answer below is still useful for context
properties, it's no longer recommended to use context.root
, which is no longer mentioned in the guide and may soon be deprecated.]
在 Vue 3 中,setup
对于 context
有一个可选的第二个参数.你可以通过 context.root
而不是 this
来访问 Vue 实例:
In Vue 3, setup
has an optional second argument for context
. You can access the Vue instance through context.root
instead of this
:
setup(props, context) {
context.root.$myUtilFunc // same as `this.$myUtilFunc` in Vue 2
}
您可以通过 context
访问的内容:
Things you can access through context
:
context.attrs
context.slots
context.parent
context.root
context.emit
这篇关于Vue 3 组合 API 和对 Vue 实例的访问的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Vue 3 组合 API 和对 Vue 实例的访问
基础教程推荐
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01
- 我什么时候应该在导入时使用方括号 2022-01-01
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01
- 动态更新多个选择框 2022-01-01
- 响应更改 div 大小保持纵横比 2022-01-01
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06
- 悬停时滑动输入并停留几秒钟 2022-01-01
- 在for循环中使用setTimeout 2022-01-01
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01