Blazor에서는 기본 페이지 레이아웃을 동적으로 업데이트하거나 중첩된 하위 구성 요소에서 트리거된 이벤트나 작업(예: API 호출 완료)을 기반으로 콘텐츠를 새로 고쳐야 하는 상황에 자주 직면합니다.
다음 시나리오를 고려해보세요.
위의 솔루션을 달성하기 위해 우리는 다음 기술을 활용합니다.
우리는 검색된 API 데이터를 루트 페이지와 해당 하위 구성 요소 모두에서 액세스할 수 있도록 범위가 지정된 서비스(예: AppState)를 사용하여 저장하고 공유합니다.
페이지가 로드될 때 스피너를 표시하고 데이터가 준비되면 콘텐츠를 표시하는 재사용 가능한 Loading.razor 구성 요소를 정의합니다.
데이터를 관리하고 기본 데이터가 변경되면 실행되는 ListChanged 이벤트를 노출하는 보기 서비스(예: WeatherForecastViewService)를 만듭니다.
하위 구성 요소에서는 뷰 서비스를 삽입하고 ListChanged 이벤트를 모니터링합니다. 변경 사항이 감지되면 StateHasChanged를 사용하여 구성 요소를 새로 고치고 업데이트된 데이터를 표시합니다.
기본 SearchResults.razor 페이지에서는 다음을 수행합니다.
<code class="language-csharp">@code { [Inject] WeatherForecastViewService viewService { get; set; } // API 调用完成后赋值为 true public bool IsLoaded { get; set; } protected override async Task OnInitializedAsync() { await GetForecastsAsync(); this.viewService.ListChanged += this.OnListChanged; } private async Task GetForecastsAsync() { // 代码省略,为简洁起见 } private void OnListChanged(object sender, EventArgs e) => this.InvokeAsync(this.StateHasChanged); public void Dispose() { this.viewService.ListChanged -= this.OnListChanged; } }</code>
<code class="language-csharp">@if (this.IsLoaded) { @this.ChildContent } else { // 显示加载微调器 }</code>
이러한 기술을 구현함으로써 하위 구성 요소와 기본 페이지 간의 통신 채널을 설정하여 UI 업데이트를 트리거하고 상위-하위 관계 전반에 걸쳐 일관된 데이터 상태를 유지할 수 있습니다.
위 내용은 API 호출 후 하위 구성 요소에서 Blazor 기본 Razor 페이지를 새로 고치는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!