我正在开发一个允许用户搜索我们的数据库的应用程序。当用户输入搜索词时,应用程序会访问 API 端点并返回数据。然后我显示数据。
当 API 返回数据时,我有一个范围服务:
services.AddScoped<AppState>();
Run Code Online (Sandbox Code Playgroud)
这使得每个返回的数据集可以在应用程序的所有组件中使用。
页面加载后SearchResults.razor,它就会从我的范围服务中获取结果,然后绘制页面的其余部分。
我需要一个“加载”微调器来放置数据,直到 API 返回数据,这可能需要很长时间,具体取决于搜索的数据量。
我的问题是,我无法弄清楚使用什么作为真/假“触发器”来了解是否显示数据或加载旋转器,或者在 API 向我发送数据后如何刷新页面。
我下面的内容仅适用于第一次初始搜索(从我的Index.razor页面),但不适用于任何包含的“过滤器”组件。
搜索结果.razor:
@page "/searchresults"
@layout PageTopComponents
<Header.razor></Header.razor>
<LeftMenu.razor>
<FilterRazorComponent01.razor></FilterRazorComponent01.razor>
<FilterRazorComponent02.razor></FilterRazorComponent02.razor>
<FilterRazorComponent03.razor></FilterRazorComponent03.razor>
<FilterRazorComponent04.razor></FilterRazorComponent04.razor>
</LeftMenu.razor>
<MainContentComponent.razor>
// CONTENT HERE SHOULD BE VISIBLE WHEN DATA HAS ARRIVED, OTHERWISE IT SHOULD SHOW A "WAITING" SPINNER
@if(API_Data_Received != null && API_Data_Received.count > 0){
foreach(){
// API Retrieved Data Here
}
} else {
// Loading Spinner
}
<ContinueSearch.razor></ContinueSearch.razor>
<Paginator.razor @ref="PaginatorComponentReference">
<ChildContent>
// THIS IS WHERE I …Run Code Online (Sandbox Code Playgroud)