我明白他们之间的区别。
OnInitializedAsync 在组件初始化时触发一次,而 OnParametersSetAsync 在每次设置/更改组件参数时触发。
这是否意味着在 .razor 页面中我们可以省略 OnInitializedAsync 函数并在此 OnParametersSetAsync() 函数中进行所有编码?
这是否意味着 OnInitializedAsync() 是多余的?
Dim*_*kos 11
假设您有一个组件调用 API 来检索一些数据。它还接受一个名为 的参数SortDirection,您希望根据其值对数据进行升序或降序排序。API 调用应该只发生一次,一旦内存中有数据,就不再需要调用后端。另一方面,假设用户有一个切换按钮可以更改排序方向,以便SortDirection参数可以在组件生命周期内多次更改。您想要检索内部数据OnInitializedAsync(),但应该在内部应用排序OnParametersSetAsync()。例子:
@if (_sortedData != null)
{
foreach (var item in _sortedData)
{
<p>@item</p>
}
}
@code {
private List<string>? _data;
private List<string>? _sortedData;
private string? _sortDirection;
[Parameter]
public string? SortDirection { get; set; }
protected override async Task OnInitializedAsync()
{
_data = await MyService.LoadData();
}
protected override void OnParametersSet()
{
if (_sortDirection != SortDirection)
{
_sortDirection = SortDirection;
if (_sortDirection == "asc")
{
_sortedData = _data?.OrderBy(x => x).ToList();
}
else if (_sortDirection == "desc")
{
_sortedData = _data?.OrderByDescending(x => x).ToList();
}
else
{
_sortedData = _data;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3354 次 |
| 最近记录: |