Home >Backend Development >C++ >How to Refresh a Main .RAZOR Page from Child Components After an API Call?

How to Refresh a Main .RAZOR Page from Child Components After an API Call?

Susan Sarandon
Susan SarandonOriginal
2025-01-09 19:42:41189browse

How to Refresh a Main .RAZOR Page from Child Components After an API Call?

How to trigger/refresh main .RAZOR page from child component after API call is completed

Problem Overview

When the API call completes and data is available, a refresh of the main .RAZOR page needs to be triggered. The challenge is to find a "trigger" to indicate that the data is ready and initiate a page refresh accordingly.

Solution

1. Implement scope service (AppState)

Create a scoped service (AppState) to manage the returned dataset and make it accessible to all components in the application.

2. Display component (SearchResults.razor)

In SearchResults.razor, get the data from the AppState service when the page loads and display it in a loop. When the API returns data, use if statements to conditionally display data or load spinners.

3. Integrated sub-filter components

When the user applies a filter from a child component, use the following code in each component:

<code class="language-csharp">string href = "/searchresults" + // 其他参数在此处 ...
NavigationManager.NavigateTo(href);</code>

This will always redirect to SearchResults.razor when a filter is applied.

4. Utilize status/notification mode

Implement the state/notification pattern to broadcast changes in the AppState service. This can be achieved by using the following method in the child component:

<code class="language-csharp">// FilterRazorComponent01.razor 中的示例
//...

public async Task OnSomeEventAsync()
{
    // 模拟一些 API 调用并触发数据更新
    await Task.Delay(3000);
    AppState.NotifyListChanged(AppState.Records, EventArgs.Empty);
    NavigationManager.NavigateTo(NavigationManager.Uri);
}</code>

5. Register notification events

In SearchResults.razor, register AppState's ListChanged event and call StateHasChanged when the event is fired to trigger a refresh.

<code class="language-csharp">this.AppState.ListChanged += this.OnListChanged;
//...

private void OnListChanged(object sender, EventArgs e)
    => this.InvokeAsync(this.StateHasChanged);</code>

6. Handle page refresh on sub-events

When a child component triggers an event that updates AppState, the ListChanged event will be broadcast, and SearchResults.razor will respond by triggering StateHasChanged to refresh the page. This ensures that the main page updates its display based on changes in the filter component.

The above is the detailed content of How to Refresh a Main .RAZOR Page from Child Components After an API Call?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn