当属性值发生变化时,Blazor Framework如何得到通知

Vib*_*nRC 6 c# asp.net-core blazor

当我们有如下HTML代码时.

<h1>@Title</h1>
Run Code Online (Sandbox Code Playgroud)

和C#一样如下

public string Title { get; set; }
Run Code Online (Sandbox Code Playgroud)

我想我已经执行了如下代码

Title = "New title updated in the runtime";
Run Code Online (Sandbox Code Playgroud)

然后我们看到视图已经与新值一起变形了.

渲染器如何知道属性值已更改.是否有类似INotifyProperyChange的实施.HTML如何知道这是更新内容的时候.

我只是想知道Blazor框架的内部是如何构建的.

Rai*_*ner 10

当用户交互发生时,Blazor会自动检查绑定属性的更改(例如,按钮单击,输入中的文本已更改).在这种情况下,Blazor的JavaScript代码会在C#(= Webassembly)中触发更改检测.因此,如果要在用户交互后刷新UI,则无需执行任何操作.

但是,在某些情况下您需要刷新UI,尽管没有发生用户交互(例如计时器).在那种情况下,你必须打电话StateHasChanged.我在learn-blazor.com上创建了一个更详细的例子.

  • 但是,这种变化检测如何工作?是否检查所有属性的更改?那不是很慢吗? (2认同)