我试图弄清楚单击按钮后如何刷新客户端组件。
带有示例的回购链接:https ://github.com/ovie91/RefreshComponent
站点 /test 或从导航菜单测试
所以我有从 API 检索数据的 OnInitializedAsync 方法
protected override async Task OnInitializedAsync()
{
result = await (some API Call);
}
然后我有一个连接到按钮的方法
private async void ButtonClick()
{
await (some API Call);
result = null;
this.StateHasChanged(); <--- Doesnt work :<
}
我曾尝试使用this.StateHasChanged(); 但没有反应。作为一种解决方法,我可以强制您再次导航到同一个网站,但是这个刷新“整个”网站而不是一个组件。
关于如何处理它的任何想法?
整个代码(剥离到最低限度):
@page "/test"
@inject HttpClient Http
@if (result == null)
{
<p>Loading...<p>
}
else
{
@result
<button @onclick="(() => ButtonClick())">Click</button>
}
@code {
private APIObject result;
protected override async Task OnInitializedAsync()
{
result = await (some API Call);
}
private async void ButtonClick()
{
await (some API Call);
result = null;
this.StateHasChanged(); <--- Doesnt work :<
}
}
更新 我想刷新组件,因此 OnInitializedAsync 将再次被触发,这意味着我不必在单击按钮后再次运行相同的代码。希望你明白我的意思。