20

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

<h1>@Title</h1>

和 C# 如下

public string Title { get; set; }

认为我已经执行了如下代码

Title = "New title updated in the runtime";

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

渲染器如何知道属性值发生了变化。有没有类似INotifyProperyChange的实施。HTML 如何知道这是更新内容的时间。

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

4

1 回答 1

22

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

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

于 2018-03-12T09:19:07.493 回答