当我们有像下面这样的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上创建了一个更详细的例子。