从 Blazor 中的异步功能禁用按钮

Kat*_*e P 2 validation asynchronous blazor matblazor blazor-client-side

我的页面上有以下 EditForm 模型:

<EditForm Model="@projectParameters" OnValidSubmit="@SubmitProject">
       <MatButton Raised="true" Type="submit" Disabled="@saveButtonDisabled">@saveButtonName</MatButton>
</EditForm>
Run Code Online (Sandbox Code Playgroud)

然后执行以下功能:

private async Task SubmitProject()
    {
        DisableSave();

        if (pageType == "Create")
        {
            await CreateProject();
        }
        else if (pageType == "Create")
        {
           await EditProject();
        }
    }
Run Code Online (Sandbox Code Playgroud)

void DisableSave()
    {
        saveButtonDisabled = true;
        saveButtonName = "Saving...";
        StateHasChanged();
    }
Run Code Online (Sandbox Code Playgroud)

SubmitProject 和 DisableSave 被正确调用,但当 CreateProject 工作时, saveButtonName 和 disabled 从未实际显示为已完成。我错过了什么?

dan*_*era 6

刷新更改为await Task.Delay(1);

private async Task SubmitProject()
{
    await DisableSave();
    ...
Run Code Online (Sandbox Code Playgroud)

然后

async Task DisableSave()
{
    saveButtonDisabled = true;
    saveButtonName = "Saving...";
    await Task.Delay(1); //flush changes
    StateHasChanged(); // not needed
}
Run Code Online (Sandbox Code Playgroud)