在Blazor组件(Radzen)中的OnAfterRenderAsync



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

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

@total是用户数量我在OnInitialized()中设置了它

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

它只呈现当我添加第二次。我不知道为什么

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

它解释了为什么total总是1 "render"后面。

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

  • 在OnParametersSet(Async)或EventCallback中设置total
  • 设置total后,呼叫StateHasChanged()

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

我还推荐你看看@RobertHaken的这张精彩的海报,它解释了一切。

相关内容

  • 没有找到相关文章

最新更新