0

起初,获取子组件数据的逻辑是在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>

该组件的代码

protected override async Task OnInitializedAsync()
{
    Model = _Query(Id);
}

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

我决定将我的代码从OnInitializedAsync移动到OnParametersSetAsync,这样每次下拉列表更改时,子组件都会更新。但是,这会创建一个无限循环。即使参数尚未更新,该方法也会持续调用。

有想法该怎么解决这个吗?

4

0 回答 0