我有一个用户列表,我想在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的这张精彩的海报,它解释了一切。