OnParametersSetAsyn c создать бесконечный цикл - PullRequest
0 голосов
/ 19 марта 2020

Сначала логика c для получения данных для дочернего компонента находилась внутри метода OnInitializedAsyn c, но я понял, что если раскрывающийся список изменился, дочерний компонент не был обновлен. В основном, в зависимости от выбранной категории, я запрашиваю разные данные из базы данных.

Здесь код:

<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();
}

I решил переместить мой код из OnInitializedAsyn c в OnParametersSetAsyn c, чтобы каждый раз, когда раскрывающийся список изменялся, дочерний компонент обновлялся. Однако это создает бесконечное число l oop. Метод вызывается постоянно, хотя параметры не обновлялись.

Есть идеи, как это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...