Blazor 在OnInitializedAsync()之后更改变量值

Blazor 在OnInitializedAsync()之后更改变量值,blazor,blazor-webassembly,Blazor,Blazor Webassembly,我有一个调用多个API的组件。我想只在所有调用完成时显示页面,因此我添加了一个bool,并用false初始化它,当OnInitializedAsync()完成时,该值将变为true,但该值不变,页面将继续显示加载程序。我做错了什么 组成部分: @if (ComponenetReady) { // Show Stuff } Else { // Show loader } @Code { public bool ComponenetReady { get; set; } = false

我有一个调用多个API的组件。我想只在所有调用完成时显示页面,因此我添加了一个bool,并用false初始化它,当
OnInitializedAsync()
完成时,该值将变为true,但该值不变,页面将继续显示加载程序。我做错了什么

组成部分:

@if (ComponenetReady) {
  // Show Stuff 
} Else {
  // Show loader
}

 @Code
{
public bool ComponenetReady { get; set; } = false; 

    protected override async Task OnInitializedAsync() {
            // Await APIs calls 
            ComponenetReady = true;
    }
}

因为它是一个异步任务,所以它将在不同的线程上运行。尝试
等待InvokeAsync(StateHasChanged)就在您的
ComponenetReady=true之后

设置标志后,尝试调用StateHasChanged()。您可能还需要将标记从OnInitializedAsync移动到OnAfterRenderAsync()。这应该已经起作用了。所以还有一个问题。用Task.Delay()替换API调用,并创建一个在我看来很好的API调用。上面的代码没有问题。组件在
OnInitializedAsync
完成后重新呈现,因此
ComponenetReady
将为真。问题在于您没有向我们展示的代码。在
ComponenetReady=true上设置断点并查看它何时被命中。WebAssembly上的Blazor没有“不同的线程”。