Как сделать acquVsCodeApi доступным в веб-представлении vscode [React] - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь разработать новое расширение для vscode на основе Webview, но у меня возникают проблемы с отправкой сообщений от клиента к расширению. Для начала я использовал этот репо https://github.com/rebornix/vscode-webview-react, и я следую этим инструкциям Microsoft https://code.visualstudio.com/api/extension-guides/webview#passing-messages-from-a-webview-to-an-extension

Как видно из примера, у нас есть

(function() {
            const vscode = acquireVsCodeApi();

Моя проблема в том, что в моем приложении реакции acquireVsCodeApi похоже на то, что его не существует. Я пробовал несколько способов, например. в жизненном цикле componentDidMount, но не повезло.

Этот человек Реагирует на общение на основе событий , кажется, может запустить его, но некоторые части его приложения отсутствуют, поэтому мне это не ясно.

Кто-нибудь имеет представление о том, как использовать acquVsCodeApi () с React или фрагментом кода, который может помочь?

Привет

1 Ответ

0 голосов
/ 21 мая 2019

Хорошо, поэтому сначала вам нужно присвоить его переменной в содержимом веб-просмотра в скрипте, например: https://github.com/shinhwagk/vscode-note/blob/be2aabf2812a9b6200be971425535024440dbd88/src/panel/notesPanelView.ts#L32

, а затем в машинописном тексте это должен быть интерфейс

interface vscode {
    postMessage(message: any): void;
}

declare const vscode: vscode;

const addCategory = () => () => vscode.postMessage({ command: 'add-category' });

Решение пришло отсюда: https://github.com/shinhwagk/vscode-note/blob/be2aabf2812a9b6200be971425535024440dbd88/src/webview/index.tsx#L10

...