javascript - Blazor WebAssembly JSRuntime.InvokeVoidAsync - blazor.webassembly.js :1 Uncaught (in promise) TypeError: Converting circular structure to JSON

标签 javascript c# blazor blazor-webassembly

我在我的 Blazor WebAssembly 应用中使用 drawio-integration 项目。

https://github.com/jgraph/drawio-integration

简单的 helloworld 示例如下所示:

<img onclick='DiagramEditor.editElement(this);' src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMjFweCIgaGVpZ2h0PSI2MXB4IiB2aWV3Qm94PSItMC41IC0wLjUgMTIxIDYxIiBjb250ZW50PSImbHQ7bXhmaWxlIGV0YWc9JnF1b3Q7VGdBR2JKbGNJaGw3a1JuRGFxSDQmcXVvdDsgYWdlbnQ9JnF1b3Q7TW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTRfNikgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzgwLjAuMzk4Ny4xMDYgU2FmYXJpLzUzNy4zNiZxdW90OyBtb2RpZmllZD0mcXVvdDsyMDIwLTAyLTE5VDEyOjQ0OjI3LjY1OVomcXVvdDsgaG9zdD0mcXVvdDt0ZXN0LmRyYXcuaW8mcXVvdDsgdmVyc2lvbj0mcXVvdDtARFJBV0lPLVZFUlNJT05AJnF1b3Q7Jmd0OyZsdDtkaWFncmFtIGlkPSZxdW90O3JVdXh2bWFtZE5aMXpyTFhPbF82JnF1b3Q7IG5hbWU9JnF1b3Q7UGFnZS0xJnF1b3Q7Jmd0O2xaUExic0l3RUVXL0prc2t4Nll0V3dvcGZhaWxLcXFRMkpsNGNGdzVHZVFZU1ByMVRZaWRCeXphcmpJK21VZm1YaWRnczdSWUdMNVBYbEdBRGlnUlJjRG1BYVVocGF4NjFLUnN5VjFEcEZIQ3NRNnMxRGM0U0J3OUtBSDVJTkVpYXF2MlF4aGpsa0ZzQjR3Ymc2ZGgyZzcxY09xZVM3Z0NxNWpyYTdwV3dpWU5uZHlRamorQ2tvbWZIQkwzSnVVKzJZRTg0UUpQUGNTaWdNME1vbTJpdEppQnJ0WHp1cnlGNy9NeFpSK2piRU5pU2FmUlJxcFIwK3poUHlYdENnWXkrOWZXbnptWTVmYXJscFFTemJlVnIrZktsZVhHTmczOTBPeXdIZHVuWTFnc1g5YlBiSWU0THFlamJzUDJJM05iZWxVTkhqSUJkVDBKMkwzVVBNOWQzS3BVSDVvNVJ6QVdpZ3M3ZnRrbDdJMWZBS1pnVFZuVnVTN01lK0p1NWNRZFQ1M0RvVTlKZXU3ZU9zYmRwWkp0NTA2NEtuQWIrMk5QU284NjE4L3B2WitIUlQ4PSZsdDsvZGlhZ3JhbSZndDsmbHQ7L214ZmlsZSZndDsiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7Ij48ZGVmcy8+PGc+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEyMCIgaGVpZ2h0PSI2MCIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMDAwMDAwIiBwb2ludGVyLWV2ZW50cz0iYWxsIi8+PGcgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMnB4Ij48dGV4dCB4PSI1OS41IiB5PSIzNC41Ij5TdGFydDwvdGV4dD48L2c+PC9nPjwvc3ZnPg==" style="cursor:pointer;">

http://jgraph.github.io/drawio-integration/helloworld.html

https://github.com/jgraph/drawio-integration/blob/master/helloworld.html

如果我像这样运行代码,一切正常,不会出现控制台错误:

<img onclick='DiagramEditor.editElement(this);' @ref=MyImageElementReference src="@DrawIoImageDataUrl" style="cursor:pointer;">

ElementReference MyImageElementReference;

如果我像这样运行代码,一切正常,但我收到控制台错误。

<img @onclick="TriggerClick" @ref=MyImageElementReference src="@DrawIoImageDataUrl" style="cursor:pointer;">

ElementReference MyImageElementReference;

public async Task TriggerClick()
{
    await JSRuntime.InvokeVoidAsync("DiagramEditor.editElement", MyImageElementReference);
}

https://learn.microsoft.com/en-us/aspnet/core/blazor/call-javascript-from-dotnet?view=aspnetcore-5.0#ijsruntime

是什么导致了下面的错误,我该怎么做才能避免它?

blazor.webassembly.js:1 Uncaught (in promise) TypeError: Converting circular structure to JSON --> starting at object with constructor 'HTMLImageElement' | property '_blazorEvents_1' -> object with constructor 'e' | property 'handlers' -> object with constructor 'Object' | property 'click' -> object with constructor 'Object' --- property 'element' closes the circle at JSON.stringify () at blazor.webassembly.js:1

最佳答案

所以我也遇到了同样的问题。通过进一步检查,InvokeAsyn 返回 ValueTask 而不是 Task

所以如果你让你的方法返回一个 ValueTask 而不是 Task 它可能会解决这个问题但是你只需要找到一种方法将你的按钮转换成那个我无法理解的类型。

让我知道它是否有效以及您是如何覆盖它的。

关于javascript - Blazor WebAssembly JSRuntime.InvokeVoidAsync - blazor.webassembly.js :1 Uncaught (in promise) TypeError: Converting circular structure to JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67028918/

相关文章:

c# - Unity 5.4 求物体长度

c# - 如何在现有 blazor 项目上启用 PWA 功能

javascript - 每种应用样式都会发生一次回流吗?

c# - 委托(delegate) : Method name expected error

c# - 在 C# 中重铸为基类

asp.net-core - 检查 RenderFragment 是否为空

c# - UseExceptionHandler Blazor 服务器端

javascript - Safari 中的文本/图像按钮未单击

javascript - 无法从 JSON 获取值

JavaScript 数学 — 得到错误答案 (128 - 64 = -64)?