Как ссылаться на локальные модули JS в компонентах Blazor?

0

Вопрос

На Dotnetconf две недели назад я слышал, что теперь можно включать локальные файлы Javascript в компоненты Blazor. Это звучит очень интересно. Я предполагаю, что подход по-прежнему заключается в использовании JSIniterop и ссылке на файл модуля.

НО как вы ссылаетесь на файл JS ??? Я перепробовал все возможные творческие варианты, но пока безуспешно.

Я удивлен, что везде гуглю, но пока не нахожу никаких руководств или примеров по этому вопросу. Все подсказки будут оценены по достоинству.

blazor components interop javascript
2021-11-19 15:22:16
1

Лучший ответ

1

Вы можете создать файл кода .js рядом с файлом .razor.cs и загрузить этот файл во время выполнения. Это описано здесь. Также я нашел презентацию этой функции здесь и репозиторий github здесь.

Допустим, у вас есть ComponentA с ComponentA.razor, ComponentA.razor.cs и ComponentA.razor.js файлы в Pages папка. Вы можете загрузить этот модуль во время инициализации компонента следующим образом:

[Inject]
public IJSRuntime JS { get; set; }

private IJSObjectReference module { get; set; }

protected override async Task OnInitializedAsync()
{
    module = await JS.InvokeAsync<IJSObjectReference>("import", "./Pages/ComponentA.razor.js");
}

Но если ваш компонент определен в проекте библиотеки компонентов, вам придется использовать другой путь к файлу. Например, если ваш проект назван AppComponents тогда этот путь был бы ./_content/AppComponents/ComponentA.razor.js.

2021-11-20 14:42:26

Я последовал вашему примеру, но все равно получаю то же исключение. Может быть, это невозможно из пользовательского компонента в другой папке, кроме страниц? Ошибка: Microsoft.Исключение JsInterop.JSException: Не удалось извлечь динамически импортированный модуль: локальный хост:5000/_content/Имя проекта/Компоненты/Общие/...
Jakob Lithner

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................