Невозможно использовать JsRuntime.InvokeAsync из OnAfterRenderAsync в серверном приложении Blazor - PullRequest
0 голосов
/ 19 октября 2019

У меня есть приложение Blazor, и в OnAfterRenderAsync я вызываю метод PlayVideo(), который должен вызывать метод JavaScript. В предыдущей версии Blazor мне удалось проверить свойство context.IsConnected, чтобы убедиться, что я могу выполнить вызов JavaScript. Однако в последней версии Blazor это свойство было удалено. Теперь, когда я пытаюсь сделать вызов JavaScript из метода PlayVideo (), я получаю следующее сообщение об ошибке:

JavaScript interop calls cannot be issued at this time. This is because the component is being prerendered and the page has not yet loaded in the browser or because the circuit is currently disconnected. Components must wrap any JavaScript interop calls in conditional logic to ensure those interop calls are not attempted during prerendering or while the client is disconnected.

Из того, что я прочитал, вызывая JavaScriptиз OnAfterRenderAsync метод должен работать нормально, так как он должен быть подключен. Есть ли способ проверить теперь, что я могу сделать вызов JavaScript, так как свойство context.IsConnected было удалено?

Спасибо ВАМ

1 Ответ

0 голосов
/ 31 октября 2019

Проверяете ли вы, что это после первого рендеринга?

Я делаю это следующим образом:

protected async override Task OnAfterRenderAsync(bool firstRender)
{
    if (firstRender)
    {
    // call your JS here
    // await JsRuntime.InvokeVoidAsync 
    }
 }

Это поведение описано в документации MS Надеюсь, это поможет.

...