我想從 Blazor 呼叫 JS 函式(這是工廠方法),然后將獲得的物件傳遞回 JS(另一個函式)。
問題是 Blazor 更改了物件,所以當我列印回傳的物件的資料(在第一個函式中)和在第二個函式中獲得的物件時,我可以看到結構不同。
我不想以任何方式在 Blazor 中修改或讀取此物件,只需 get pass 即可。
更新:請閱讀 KirkWoll 的評論以獲取更多技術改寫。目前我將 JS 函式稱為await jsRuntime.InvokeAsync<object>(...但它不起作用(如預期的那樣)。
C#——網路標準 2.0。
uj5u.com熱心網友回復:
演示和解決方法
我創建了這個簡單的Blazor Fiddle (WASM 3.1),它讀取一個 JavaScript 物件,然后將其寫回。如果您在瀏覽器控制臺中查看輸出,您可以看到物件在屬性不變的情況下來回傳遞。
但是,該功能已從物件中剝離。那是因為物件是作為 json 傳遞的,而 json 只有屬性。所以只能發送屬性。
OP 還測驗回傳的物件是否與存盤的全域物件相同。然而,這將是錯誤的,因為這些是不同的實體。屬性可能相等,但參考不相等。
一種解決方法
如果要求是通過參考將物件從一個 JavaScript 函式傳遞給另一個,那么解決方法是創建一個 JavaScript 函式來直接執行此操作,而不將物件傳遞給 Blazor。基本上,只是一個觸發呼叫的函式。解決方法包含在小提琴中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/480455.html
標籤:javascript C# 西装外套
