Blazor服务器StateHasChanged()不刷新数据



在更新了一些数据后,我很难让我的Blazor组件重新发布。在我的组件中,我有一个团队列表,每个团队都有一个成员列表。我可以点击每个团队上的删除按钮,将该成员从团队中删除。除了页面在删除后不会刷新外,这一操作效果良好。我已尝试正常设置StateHasChanged()。我已尝试覆盖ShouldRender(),如下所示。我已经尝试过使用InvokeAsync(StateHasChanged),但没有任何内容重新出现在我的页面上。我发现刷新数据的唯一方法是通过再次调用OnInitializedAsync()中的代码手动刷新团队成员列表。我也尝试过通过一个通知服务来更新组件之间的数据,但StateHasChanged()似乎什么都不做。有什么想法吗?

@code {
[Parameter]
public Team? Team { get; set; }
private List<Member?>? TeamMembers { get; set; }

private bool _forceRerender;

protected override async Task OnInitializedAsync()
{
var teamMembers = await _teamService.GetTeamMembers(Team);
if (teamMembers != null) TeamMembers = teamMembers.ToList();
}
private async Task HandleRemoveTeamMember(BsonObjectId memberId, string timeStamp)
{
await _teamService.RemoveMember(Team.Id, memberId, timeStamp);
_forceRerender = true;
StateHasChanged();
}

protected override bool ShouldRender()
{
if (_forceRerender)
{
_forceRerender = false;
return true;
}
return base.ShouldRender();
}

通过调用_teamService.RemoveMember()方法删除TeamMembers对象后,不会更新该对象。

添加一些逻辑以删除TeamMembers列表中的条目,然后调用StateHasChanged()

有点像

TeamMembers.RemoveAll(x => x.MemberId == memberId);
StateHasChanged();

相关内容

  • 没有找到相关文章

最新更新