双向绑定和后台更新不重新渲染组件

时间:2020-12-31 06:06:02

标签: blazor blazor-server-side

我有一个 Blazor 服务器端项目,其中有一个自定义组件,该组件使用视图模型绑定到 inputbase 复选框。

如果我通过单击按钮更改视图模型,则一切正常。 但是,如果我通过更“背景”的东西(例如 GRPC 推送消息)更改视图模型,则不会重新渲染 inputbase 复选框。

1 个答案:

答案 0 :(得分:3)

只要更改原因与 UI 相关,例如单击按钮、字段中的输入更改等,在大多数情况下,渲染周期由 Blazor 启动。

但是,如果原因是更嵌套的东西,例如计时器或完成的异步调用,您可以在组件中使用方法 StateHasChanged 来触发新的渲染周期。

如评论中所述,在 UI 线程外调用此方法可能存在缺陷。 await InvokeAsync(StateHasChanged) 有助于缓解该问题。此外,它是异步的,几乎是 Blazor 的“服务器式”。