【问题标题】:OnAfterRender OnAfterRenderAsync in Blazor Component (Radzen)Blazor 组件中的 OnAfterRender OnAfterRenderAsync (Radzen)
【发布时间】:2021-02-08 06:50:02
【问题描述】:

我有一个用户列表,我想在 RadzenTextBox 中显示列表的编号。 像这样:

<RadzenTextBox @bind-Value=@total Style="width: 80px; text-align: right" Change=@(args => OnChange(args)) />

所以@total 是用户数,我在 OnInitialized() 中设置

然后我将一个用户添加到列表中,并在 OnAfterRender() 或 OnAfterRenderAsync() 中再次设置 @total。 @total 已更改(我在 OnAfterRender() 中进行控制台)但我的视图不会重新渲染。

它仅在我第二次添加时呈现。不知道为什么

【问题讨论】:

    标签: c# blazor blazor-server-side


    【解决方案1】:

    问题是当您在OnAfterRender 中设置total 时(实际上是在渲染之后),组件不知道状态再次更改并且不会反映total's 的新值。

    它解释了为什么 total 总是落后 1 个“渲染”。

    要解决这个问题,您可以:

    • 在 OnParametersSet(Async) 或 EventCallback 期间设置 total
    • 设置total后,拨打StateHasChanged()

    注意:即使在 OnAfterRender 中,您也可以致电 StateHasChanged(),但我建议您避免这样做,除非没有其他选择。

    我还建议查看@RobertHaken 的this 精彩海报,它解释了一切。

    【讨论】:

    • 是的,谢谢。这就是我想知道的:D 我在 OnAfterRender() 中使用调用 StateHasChanged() 并且它有效
    猜你喜欢
    • 2023-03-21
    • 2020-04-06
    • 2021-03-10
    • 2020-07-12
    • 1970-01-01
    • 2021-03-10
    • 1970-01-01
    • 2021-09-10
    • 2020-03-04
    相关资源
    最近更新 更多