Как ограничить подписку на событие в инициализации компонента Blazor - PullRequest
0 голосов
/ 13 марта 2020

Когда я пытаюсь подписаться на событие при инициализации компонента блейзора, каждый раз, когда страница обновляется или перемещается, метод OnInitializedAsyn c вызывается снова и снова, затем список вызовов этого события значительно увеличивается. Как ограничить подключение только на один раз?

@code {
[Parameter]
public CustomerModel model { get; set; }


protected override async Task OnInitializedAsync()
{
    await base.OnInitializedAsync();
    model.PropertyChangedEvent += PropertyChanged;

}
}

Ответы [ 2 ]

1 голос
/ 13 марта 2020

Обычно, когда я связываю событие, я всегда сначала связываю его. Это делается для того, чтобы убедиться, что только один и тот же обработчик связан только один раз.

model.PropertyChangedEvent -= PropertyChanged;
model.PropertyChangedEvent += PropertyChanged;
0 голосов
/ 13 марта 2020

Реализация IDispoable для отмены подписки на событие.

@implement IDisposable
...
@code {
    [Parameter]
    public CustomerModel model { get; set; }


    protected override async Task OnInitializedAsync()
    {
        await base.OnInitializedAsync();
        model.PropertyChangedEvent += PropertyChanged;
    }

    public void Dispose()
    {
        model.PropertyChangedEvent -= PropertyChanged;
    }
}

...