在Blazor客户端应用程序(razor组件)中,是否每个触发的事件都会刷新UI?

在Blazor客户端应用程序(razor组件)中,是否每个触发的事件都会刷新UI?,razor,.net-core,razor-pages,blazor,blazor-client-side,Razor,.net Core,Razor Pages,Blazor,Blazor Client Side,在Blazor客户端应用程序中,触发的每个事件(鼠标、键盘、触摸等)是否都会导致整个UI刷新? 在下面的示例中,在每个键输入上,i都会递增,而它不会绑定到oninput事件 <input type="text" @bind-value="@name" @bind-value:event="oninput"/> @name @ComputeResult() @code { string name; int i=0; public double ComputeResult() {

在Blazor客户端应用程序中,触发的每个事件(鼠标、键盘、触摸等)是否都会导致整个UI刷新? 在下面的示例中,在每个键输入上,i都会递增,而它不会绑定到oninput事件

<input type="text" @bind-value="@name" @bind-value:event="oninput"/>
@name
@ComputeResult()

@code {

string name;
int i=0;

public double ComputeResult()
{
    i = i + 1;
    return i;
}

}

@名字
@计算机结果()
@代码{
字符串名;
int i=0;
公共双计算机结果()
{
i=i+1;
返回i;
}
}

只有发生更改的DOM元素才会更新,而不是整个UI
Blazor
使用他们所称的
渲染树
跟踪已更改且需要更新的元素。触发事件时,它将重新生成渲染树并将其与旧渲染树进行比较以查找更改,然后仅更新DOM中渲染树中更改的项

组件渲染为浏览器文档对象模型(DOM)的内存表示形式,称为渲染树,用于以灵活高效的方式更新UI

初始渲染组件后,组件将重新生成 它的渲染树响应事件。Blazor然后比较新的 根据上一个树渲染树,并将任何修改应用于 浏览器的文档对象模型(DOM)


From:

只有发生更改的DOM元素才会更新,而不是整个UI
Blazor
使用他们所称的
渲染树
跟踪已更改且需要更新的元素。触发事件时,它将重新生成渲染树并将其与旧渲染树进行比较以查找更改,然后仅更新DOM中渲染树中更改的项

组件渲染为浏览器文档对象模型(DOM)的内存表示形式,称为渲染树,用于以灵活高效的方式更新UI

初始渲染组件后,组件将重新生成 它的渲染树响应事件。Blazor然后比较新的 根据上一个树渲染树,并将任何修改应用于 浏览器的文档对象模型(DOM)


From:

开始时,每当您想重新渲染组件时,都必须调用StateHasChanged方法,该方法作为渲染过程的起点。如今,这已不再必要。每当触发UI事件(如更改或单击)时,都会自动调用StateHasChanged方法。如果将空事件处理程序附加到button控件并点击它,StateHasChanged方法仍将被调用,这将导致重新呈现组件,并因此计算表达式
@computersult()
。请注意,可以通过重写默认返回值为true的ComponentBase.ShouldRender方法来更改此行为。请注意,即使覆盖此方法以返回false,也始终会进行第一次渲染


组件仅创建一次,并且可以多次重新渲染。Kyle的回答中描述了重新渲染的过程和重新渲染的内容

开始时,每当您想要重新渲染组件时,都必须调用StateHasChanged方法,该方法作为渲染过程的起点。如今,这已不再必要。每当触发UI事件(如更改或单击)时,都会自动调用StateHasChanged方法。如果将空事件处理程序附加到button控件并点击它,StateHasChanged方法仍将被调用,这将导致重新呈现组件,并因此计算表达式
@computersult()
。请注意,可以通过重写默认返回值为true的ComponentBase.ShouldRender方法来更改此行为。请注意,即使覆盖此方法以返回false,也始终会进行第一次渲染

组件仅创建一次,并且可以多次重新渲染。Kyle的回答中描述了重新渲染的过程和重新渲染的内容

简单介绍一下“剃刀组件”重命名的内容,Blazor就是Blazor。简单介绍一下“剃刀组件”重命名的内容,Blazor就是Blazor。