我有一个简单的Blazor组件。
<div @onclick="Handleclick">Click me</div>
@code {
public async Task Handleclick()
{
await Task.Run(()=> System.Threading.Thread.Sleep(1000));
}
protected override void OnAfterRender(bool firstRender)
{
Console.WriteLine("Rendered");
}
}
当我单击div时,“ Rendered”已打印到控制台,并在1秒钟后再次打印,这意味着blazor已两次渲染了组件。我了解Blazor会触发自动重新渲染组件,这是向该组件分发事件的一部分。
但是为什么在任务完成后重新呈现?如何避免第二次渲染?
我在OnAfterRender生命周期挂钩中有一些JS互操作,现在可以运行两次。我可以添加某种计数器,但这会污染我的代码,我想避免这种情况。
如果我的Handleclick
是一个简单的public void方法,那么一切正常,但这并不总是可能的