c# - Blazor Framework 如何在属性值更改时收到通知

标签 c# asp.net-core blazor

当我们有如下 HTML 代码时。

<h1>@Title</h1>

和 C# 如下所示

public string Title { get; set; }

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

Title = "New title updated in the runtime";

然后我们看到 View 已与新值一起变化。

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

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

最佳答案

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

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

关于c# - Blazor Framework 如何在属性值更改时收到通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48920530/

相关文章:

c# - iTextSharp 使用 AES 加密读取 PDF 抛出异常

c# - 覆盖 WinForms MessageBox 控件

asp.net-core - 一个对象句柄有这么多TimerQueueTimer引用意味着什么

c# - 解析 DBContext 并在 Asp.Net Core 中实现另一个接口(interface)

c# - 在 blazor 中单击按钮时执行异步方法

Blazor - textarea 绑定(bind)到 oninput,但当文本区域的值随 javascript 更改时不会被调用

c# - 为什么我下载文件的代码会生成损坏的 PDF?

c# - 将 ViewData 传递给部分 View

c# - 将 IConfigurationSection 转换为 IOptions

asp.net-core - Blazor (WASM) 和 Web Api 单独的项目调试