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

У меня есть Foo.razor:

@foreach (var item in items) {
  <p>@item</p>
}

@code {
  private List<string> items = new List<string>();

  public void Append(string item) => items.Add(item);
}

Если у меня есть Bar.razor:

<Foo/>

@code {
  public void SomeMethod() {
    ...
  }
}

, как мне позвонить Append("something") с SomeMethod()?

1 Ответ

0 голосов
/ 21 марта 2020

Ниже приведен пример использования атрибута @ref. @ref предоставляет способ ссылки на экземпляр компонента. Пожалуйста, обратитесь к: Компоненты Blazor

Foo

@foreach (var item in items)
{
    <p>@item</p>
}

@code {
    private List<string> items = new List<string>();

    public void Append(string item) =>items.Add(item);

    public void Refresh()
    {
        this.StateHasChanged(); //To refresh component after we have added items
    }
}

Бар

<Foo @ref="foo"/>

<button class="btn btn-primary" @onclick="SomeMethod">Add items</button>

@code {

    Foo foo;

    public void SomeMethod()
    {
        foo.Append("item1");
        foo.Refresh();
    }

}

Примечание:

The component variable is only populated after the component is rendered and its output includes the component's element. Until that point, there's nothing to reference. To manipulate components references after the component has finished rendering, use the OnAfterRenderAsync or OnAfterRender methods.

...