我在 Blazor Server 中有一個子組件,它顯示一個表格。單擊該表中的一行時,我有以下處理程式方法和事件回呼將資料發送到父組件(它將子組件包裝在一個彈出視窗中,當新資料通過時需要切換)。
objectget/set 來自 DevExpress,我似乎無法在不引發錯誤的情況下使該方法異步,但事件回呼需要異步。
[Parameter]
public EventCallback<DataObj> OnDataObjSelection { get; set; }
DataObj _selectedDataObject { get; set; }
object SelectedDataObject
{
get
{
return _selectedDataObject;
}
set
{
_selectedDataObject = value as DataObj;
new Task(async () =>
{
await OnDataObjSelection.InvokeAsync(_selectedDataObject);
}).Start();
}
}
在父組件中,我在事件回呼上觸發了這個函式(如果它是可見的,它將隱藏包裝子組件的彈出視窗):
async void DataObjSelectionChanged(DataObj dataObj)
{
_currentDataObj = dataObj;
if (_showPopup)
{
await InvokeAsync(() =>
{
_showPopup = false;
StateHasChanged();
});
}
}
然而,我收到以下錯誤:Use InvokeAsync() to switch execution to the Dispatcher when triggering rendering or component state Blazor Server
有誰知道如何解決這個問題?我以為我的語法是正確的,但顯然不是。
uj5u.com熱心網友回復:
正如上面提到的,你把這件事復雜化了。
[Parameter]
public EventCallback<DataObj> OnDataObjSelection { get; set; }
DataObj _selectedDataObject { get; set; }
object SelectedDataObject
{
get => _selectedDataObject;
set
{
_selectedDataObject = value as DataObj;
OnDataObjSelection.InvokeAsync(_selectedDataObject);
}
}
和:
private void DataObjSelectionChanged(DataObj dataObj)
{
_currentDataObj = dataObj;
if (_showPopup)
StateHasChanged();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/457180.html
