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

asp.net-core blazor c#

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



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因