我已经在整个Blazor项目中创建了Blazor组件,并且一切正常。但是,当我将此组件移到它自己的Razor类库项目中时,现在出现一个错误,直到与服务器建立连接后,我才可以使用JSInterop。我正在OnAfterRenderAsync()方法中运行代码。
进行更改时,我不得不稍微更改代码。在一个完整的Blazor项目中,在Startup类中为DI提供了JSInterop。但是,calss库不是这种情况。
因此,而不是页面中的“ @inject JSInterop js”,我必须像这样设置它-
private IJSRuntime js { get; set; } protected override void OnInitialized() { js = ScopedServices.GetRequiredService<IJSRuntime>(); }
从网络上提供的粗略详细信息中,我假设这是从Parent项目获得服务的。
使用调试,我可以看到js不是null。它似乎确实已设置为有效对象。
有人能指出我正确的方向吗?
我已经在整个Blazor项目中创建了Blazor组件,并且一切正常。但是,当我将该组件移到它自己的Razor类库项目中时,我现在收到一个错误,我无法...
服务器预先渲染,因此您的代码将在与服务器建立客户端连接之前运行。在OnAfterRenderAsync中进行渲染时,仅当firstRender参数为true时或在此之后的任何点(但绝对不能)之前,才应使用IJSRuntime。