Blazor OnParametersSetAsync创建无限循环

Blazor OnParametersSetAsync创建无限循环,blazor,razor-components,Blazor,Razor Components,起初,获取子组件数据的逻辑在OnInitializedAsync方法中,但我意识到,如果下拉列表更改,子组件不会更新。基本上,根据选择的类别,我从数据库中查询不同的数据 代码如下: <EditForm Model="Model" OnValidSubmit="Save"> <div class="form-group"> <label for="Category">Category</label> <s

起初,获取子组件数据的逻辑在OnInitializedAsync方法中,但我意识到,如果下拉列表更改,子组件不会更新。基本上,根据选择的类别,我从数据库中查询不同的数据

代码如下:

<EditForm Model="Model" OnValidSubmit="Save">
    <div class="form-group">
        <label for="Category">Category</label>
        <select id="Category" class="custom-select" @onchange="OnCategoryChanged">
            <option value=""></option>
            @foreach (var category in Model.Categories)
            {
                if (Model.Category != null && Model.Category.Value == category.Id)
                {
                    <option value="@category.Id" selected="selected">@category.Name</option>
                }
                else
                {
                    <option value="@category.Id">@category.Name</option>
                }
            }
        </select>
        <ValidationMessage For="@(() => Model.Category)" />
    </div>

    @if (Model.Category != null && Model.Category.IsExternalOrNonRuning == false)
    {
        <ChildComponent @bind-Data="Model.Data" Id="Id" Category="Model.Category" />
    }
</EditForm>
我决定将代码从OnInitializedAsync移动到OnParametersSetAsync,这样每次下拉列表更改时,子组件都会更新。但是,这会创建一个无限循环。即使参数尚未更新,也会连续调用该方法


有没有办法解决这个问题?

尝试将代码移回init,每次下拉列表更改时,调用statehaschanged。按照@KrishnaDhungana所说的去做。@Tyler Durden,e.Value.ToString()在OnCategoryChanged方法中计算为category.Id
protected override async Task OnInitializedAsync()
{
    Model = _Query(Id);
}

private void OnCategoryChanged(ChangeEventArgs e)
{
   Model.Category = e.Value.ToString();
}