Блейзер меняется в абзаце

В Blazor с помощью EventCallback вы можете запускать функцию в родительском компоненте, когда что-то изменяется в дочернем компоненте. В приведенном ниже примере дочерний компонент ожидает нажатия кнопки, и при этом нажатии родительский компонент запускает необходимую функцию (родительский компонент не представлен).

Есть ли способ аналогичным образом запустить функцию из родительского компонента, если что-то изменится внутри абзаца?

<p>Current count: @currentCount</p>
<button @onclick="OnChangeEvent" class="btn btn-primary" @onclick="IncrementCount">Click me</button>

@code {
    [Parameter] public EventCallback OnChangeEvent { get; set; }
    private int currentCount = 0;

    private void IncrementCount()
    {
        currentCount++;
    }
}

person Tomas Am    schedule 23.09.2020    source источник
comment
Вы спрашиваете, как обработать событие локально и, возможно, передать его родителю?   -  person Panagiotis Kanavos    schedule 24.09.2020


Ответы (1)


<button @onclick="OnChangeEvent" class="btn btn-primary" @onclick="IncrementCount">Click me</button>

Этот код никогда не будет работать. Вы не можете использовать директиву @onclick дважды. Вместо этого вы можете сделать что-то вроде этого:

<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>


private void IncrementCount()
{
        currentCount++;

        OnChangeEvent.InvokeAsync();
}

Есть ли способ аналогичным образом запустить функцию из родительского компонента, если что-то изменится внутри абзаца?

Что такое абзац? Вы имеете в виду элемент <p>?

Если да, то вы также имеете в виду запуск функции из родительского компонента при изменении currentCount, верно? В этом случае мой пример выше делает то же самое ... увеличивает currentCount, а затем вызывает функцию. Вы также можете передать значение функции.

person enet    schedule 23.09.2020