2

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

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

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

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

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

4

1 回答 1

2

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

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

为了解决这个问题,您可以:

  • totalOnParametersSet(Async) 或 EventCallback 期间设置
  • 设置后total,调用StateHasChanged()

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

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

于 2021-02-08T08:47:54.143 回答