當屬性值發生變化時,Blazor Framework如何得到通知

asp.net-core blazor c#

當我們有像下面這樣的HTML代碼時。

<h1>@Title</h1>

和C#一樣如下

public string Title { get; set; }

我想我已經執行瞭如下代碼

Title = "New title updated in the runtime";

然後我們看到視圖已經與新值一起變形了。

渲染器如何知道屬性值已更改。是否有類似INotifyProperyChange的實現。 HTML如何知道這是更新內容的時候。

我只是想知道Blazor框架的內部是如何構建的。

一般承認的答案

當用戶交互發生時,Blazor會自動檢查綁定屬性的更改(例如,按鈕單擊,輸入中的文本已更改)。在這種情況下,Blazor的JavaScript代碼會在C#(= Webassembly)中觸發更改檢測。因此,如果要在用戶交互後刷新UI,則無需執行任何操作。

但是,在某些情況下您需要刷新UI,儘管沒有發生用戶交互(例如計時器)。在這種情況下,您必須調用StateHasChanged 。我在learn-blazor.com上創建了一個更詳細的例子。



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow