我知道调用
然而,我有时也会看到其他人的代码中出现
我只找到了Blazor文档中的这部分内容,其中提到:
我尝试过在计时器的Elapsed事件中调用StateHasChanged(),而不是InvokeAsync(StateHasChanged),结果如预期地工作,没有任何问题。我应该调用await InvokeAsync(StateHasChanged)吗?如果是这样,为什么呢?我感觉可能有一些重要的细微差别我不知道。
我还看到过类似InvokeAsync(() => InvokeAsync(Something))的调用,同样的问题,为什么呢?
此外,我有时也看到InvokeAsync()被调用时没有使用await,这是怎么回事?
问题太多了,抱歉! :D
StateHasChanged()
方法会通知组件状态已更改,因此应重新渲染。然而,我有时也会看到其他人的代码中出现
await InvokeAsync(StateHasChanged)
或await InvokeAsync(() => StateHasChanged())
这样的内容,但我不确定它们与StateHasChanged()
有何不同,以及何时应优先选择其中之一,以及为什么。我只找到了Blazor文档中的这部分内容,其中提到:
我不理解这个。它只是说“...会分派到Blazor的同步上下文”,我对此不满意,什么是“Blazor的同步上下文”?如果组件必须根据外部事件(如计时器或其他通知)进行更新,请使用InvokeAsync方法,该方法会分派到Blazor的同步上下文。
我尝试过在计时器的Elapsed事件中调用StateHasChanged(),而不是InvokeAsync(StateHasChanged),结果如预期地工作,没有任何问题。我应该调用await InvokeAsync(StateHasChanged)吗?如果是这样,为什么呢?我感觉可能有一些重要的细微差别我不知道。
我还看到过类似InvokeAsync(() => InvokeAsync(Something))的调用,同样的问题,为什么呢?
此外,我有时也看到InvokeAsync()被调用时没有使用await,这是怎么回事?
问题太多了,抱歉! :D
InvokeAsync
调用在另一个调用中,就像这里(第42行) - aradalvandInvokeAsync
在 Blazor WebAssembly 中始终无关紧要,只在 Blazor 服务器端中才相关。 - aradalvand