You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor问题:OnAfterRenderAsync中hideDiv未设为false的原因排查

解决Blazor中OnAfterRenderAsync设置变量后UI不更新的问题

问题核心在于Blazor的渲染机制:OnAfterRenderAsync执行完成后,框架不会自动触发组件重新渲染。你修改了hideDiv的值,但UI无法感知到这个变化,所以不会同步更新显示。

修改方案很直接,在设置hideDiv = false之后,调用StateHasChanged()方法通知框架更新UI即可:

<MudItem xs="12">
    <MudText Typo="Typo.body1">@hideDiv</MudText>
</MudItem>
<MudItem xs="12" Class="@(hideDiv ? "invisible" : "")">
 ...
</MudItem>

@code{
    private bool hideDiv { get; set; } = true;

    protected override async Task OnAfterRenderAsync(bool firstRender)
    {
        if (firstRender)
        {
            await JSRuntime.InvokeVoidAsync("twttr.widgets.load");
            hideDiv = false;
            // 通知框架状态已变更,触发UI重新渲染
            StateHasChanged();
        }
    }
}

额外排查建议:

  • 检查JSRuntime.InvokeVoidAsync("twttr.widgets.load")是否抛出异常,如果该调用失败,后续的hideDiv赋值逻辑不会执行,可添加try-catch块排查问题。
  • 确认invisible CSS类的样式规则正确,确保类名和样式定义匹配。

内容的提问来源于stack exchange,提问作者seanrco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 11:56:05