Для людей (таких как я), которые являются новичками в Blazor, стоит отметить, что вам не обязательно добавлять компоненты динамически, на самом деле вам, вероятно, не нужно в большинстве случаев.
Возьмите пример страницы / компонента, который показывает заказ на продажу, а затем имеет дочерний компонент для каждой строки заказа на продажу. У вас может быть код, который выглядит так на вашей странице бритвы:
@foreach (var salesOrderLine in _salesOrder.salesOrderlines)
{
<SalesOrderLine>@salesOrderLine</SalesOrderLine>
};
Если бы у вас была кнопка, которая добавила еще одну строку заказа на продажу, вы могли бы просто добавить новую запись в модель * / 1006 * модель / представление в событии нажатия этих кнопок.
Нажатие кнопок обычно запускает повторную визуализацию, поэтому на странице должен автоматически отображаться дополнительный компонент SalesOrderLine
.
Ключевым моментом здесь (для тех из MVC фона) является то, что нет необходимости пытаться вручную вводить новый HTML-код в DOM или динамически загружать частичное представление, как в MVC, Blazor сделает это. сделай это для тебя.
Если какое-то другое действие изменяет состояние заказа на продажу или строки заказа на продажу, и Blazor не замечает необходимости обновлять эту часть самого DOM, тогда вы можете подтолкнуть его, добавив строку:
this.StateHasChanged();
в ваш метод, чтобы явно сказать Blazor, что все изменилось и что теперь он должен обновить отрендеренную версию страницы.
Несмотря на сходство синтаксиса между бритвенными страницами для MVC и для Blazor, модель Blazor концептуально гораздо ближе к чему-то вроде React, чем к MVC, очень важно понимать, что что-то похоже на shadow-DOM на заднем плане.
На этой странице есть несколько хороших указателей о привязке данных в Blazor.