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

时间:2018-02-22 05:54:18

标签: c# asp.net-core blazor

当我们有如下的HTML代码时。

<h1>@Title</h1>

和C#如下

public string Title { get; set; }

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

Title = "New title updated in the runtime";

然后我们看到视图已经变为新值。

渲染器如何知道属性值有变化。 是否有类似INotifyProperyChange的实现。 HTML如何知道这是更新内容的时候。

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

1 个答案:

答案 0 :(得分:9)

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

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