Невозможно использовать JsRuntime.InvokeAsync из OnAfterRenderAsync в серверном приложении Blazor

У меня есть приложение 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 было удалено?

Спасибо


person Dominick    schedule 19.10.2019    source источник


Ответы (1)


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

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

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

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

person Chris Boot    schedule 31.10.2019