【发布时间】:2020-04-23 04:54:15
【问题描述】:
我使用布尔属性在用户点击按钮后禁用它,这样点击就不会发生两次。
private bool DisablePlaceOrderButton { get; set; } = false;
private void PlaceOrder_Clicked()
{
DisablePlaceOrderButton = true;
StateHasChanged();
if (cart.Lines.Count() == 0)
{
DisablePlaceOrderButton = false;
return;
}
...
}
按钮设计如下:
<button @onclick="@PlaceOrder_Clicked" disabled="@DisablePlaceOrderButton">Place Order</button>
但这不起作用,并且仅在 PlaceOrder 方法完成执行后才禁用按钮。 我对 ajax 指示器有同样的问题,在方法执行后,应该显示,完成后应该隐藏,使用 if 块。 在这两种情况下,statehaschanged 都没有效果。我使用 Blazor Server 端预览版 9。如何使这些工作?
【问题讨论】:
-
StateHasChanged 通知组件其状态已更改,但它不呈现组件。组件将决定何时渲染自己。你不能在同步方法中做到这一点,你应该异步你的代码让组件有机会渲染。
标签: blazor