我也可以重现这个问题,那是因为我们使用的是服务器端渲染的 blazor 服务器。
当我们使用
@ref
为子组件创建引用,然后使用 ref 调用方法并更改子组件内部的变量值时,值会更改,但视图不会重新渲染。就像您分享的那样,我们可以使用 StateHasChanged();
强制子组件重新渲染。
@code {
bool showModal = false;
public void ShowModal()
{
showModal = true;
StateHasChanged();
}
}
StateHasChanged 通知组件其状态已更改。
通知组件其状态已更改。当适用, 这将导致组件重新渲染。