如何在blazor中强制StateHasChanged



我有这个代码:

<div class="col-lg-12 control-section toast-default-section">
<SfToast ID="toast_default" @ref="ToastObj" Title="Error" Content="@a" </SfToast>
</div>

@code{    
a = "Test";
StringBuilder b = new StringBuilder();
b.Append("Hello ");  

if (b.ToString() != "")
{
a = a+ b;
StateHasChanged();
await ToastObj.ShowAsync();
}
}

当这个";ToastObj";打开,我需要点击2次才能刷新。我不知道为什么。

For example:
First Result: Test
Second Result: Test Hello
I need click two times to refresh.

对于未来,查看包括SFToast组件在内的所有代码会很有帮助。

但是,您的调用是正确的。要想刷新页面,你所要做的就是让代码点击";StateHasChanged(("作用我认为问题在于,您的代码位于任何函数之外。考虑@code{}的行为类似于具有一些差异的普通类文件。例如;构造函数";但创建时调用的第一个方法将是OnInialized((。我建议包装代码并确保所有变量都已初始化

@code{    
protected override void OnInitialized()
{
var a = "Test";
StringBuilder b = new StringBuilder();
b.Append("Hello ");  

if (b.ToString() != "")
{
a = a+ b;
StateHasChanged();
await ToastObj.ShowAsync();
}
}
}

尝试使用InvokeAsync(StateHasChanged(;

相关内容

  • 没有找到相关文章

最新更新