当刷新或手动导航到使用 javascript 互操作的 Blazor 页面时,它会出错,因为 javascript 中不再存在 dispose 函数。
有没有办法在刷新或导航时不在实现 IDisposable 的组件上运行“dispose”?“ElementReference”类型在哪里有帮助?
这是上下文的一些代码:
我的 blazor 组件实现了 IDisposable:
@implements IDisposable
这将运行我的 Dispose 函数,该函数调用我的互操作文件:
public void Dispose()
{
JqxWindowJsInterop.Dispose();
}
我的 JsInterop 运行这个对 javascript 的调用:
public void Dispose()
{
jsRuntime.InvokeAsync<string>(
"jqxWindowComponent.dispose",
InstanceId);
_JqxWindowJsInteropReference?.Dispose();
}
最后在javascript中运行它:
window.jqxWindowComponent = {
dispose: function (instanceId) {
console.log('jqxWindowComponent.dispose : ' + instanceId);
if ($('#' + instanceId).length) {
$('#' + instanceId).jqxWindow('destroy');
}
delete jqxWindowList[instanceId];
}};
当我通过浏览器刷新或导航到/从该页面导航到此页面时,我收到此错误
System.NullReferenceException:'对象引用未设置为对象的实例。'MyNameSpace.Components.JqxWindowComponent.JqxWindowJsInterop.get 返回 null。
任何帮助表示赞赏。