当我们有如下的HTML代码时。
<h1>@Title</h1>
和C#如下
public string Title { get; set; }
想想我已经执行了如下代码
Title = "New title updated in the runtime";
然后我们看到视图已经变为新值。
渲染器如何知道属性值有变化。
是否有类似INotifyProperyChange
的实现。 HTML如何知道这是更新内容的时候。
我只是想知道Blazor框架的内部是如何架构的。
答案 0 :(得分:9)
当用户交互发生时,Blazor会自动检查绑定属性的更改(例如,按钮单击,输入中的文本已更改)。在这种情况下,Blazor的JavaScript代码会在C#(= Webassembly)中触发更改检测。因此,如果要在用户交互后刷新UI,则无需执行任何操作。
但是,有些情况下您想要刷新UI,尽管没有发生用户交互(例如计时器)。在这种情况下,您必须致电StateHasChanged
。我在learn-blazor.com上创建了一个更详细的例子。