我使用VS Code API的ExtensionContext.globalState((来计算我们的扩展的侧边栏被打开的次数。这在一个扩展名为.ts的命令-处理程序中,它按预期计算在本地存储上打开的次数。
我想在一个.js文件中检索这个计数,我们正在使用JQuery将组件附加到侧边栏的UI中。然而,我不知道如何检索ExtensionContext.globalState而不是extension.ts
这就是我获取和更新分机.ts 计数值的方式
const retrievedOpeningCountValue = context.globalState.get<Number>("sidebarOpeningCount");
// If show hasn't been called yet, retrieve 0, then increase it to 1 to store such value
let retrievedValue = retrievedOpeningCountValue?.valueOf() || 0;
let increasedValue = retrievedValue + 1;
context.globalState.update("sidebarOpeningCount", increasedValue);
然后我需要在我的JQuery文件中检索这个数字。我不能做import * as vscode from "vscode";
,因为它不是TS文件。即使是,context: vscode.ExtensionContext
也只能作为参数传递给扩展.ts上的激活函数。
但基本上,我想在js文件上做一些类似const retrievedOpeningCountValue = context.globalState.get<Number>("sidebarOpeningCount");
的事情。我该怎么做?
您可以简单地将context
分配给某个全局/共享资源,并将其导入任何其他.js
/.ts
文件。
类似于:
扩展.ts
export async function activate(context: vscode.ExtensionContext) {
Container.context = context;
container.ts
import { ExtensionContext } from "vscode";
export class Container {
private static _extContext: ExtensionContext;
public static get context(): ExtensionContext {
return this._extContext;
}
public static set context(ec: ExtensionContext) {
this._extContext = ec;
}
}
您的其他文件.ts
import { Container } from "../container";
...
const retrievedOpeningCountValue = Container.context.globalState.get<Number>("sidebarOpeningCount");