Обновление других компонентов Blazor из других частей приложения

Рассмотрим сценарий, в котором у вас есть динамическая навигация (например, список категорий сыра). Компонент навигации существует в макете, который имеет различные другие компоненты содержимого. Один из них позволяет пользователю обновить название выбранной категории сыра. Но ... как отразить это на компоненте навигации? Если бы кто-то рассматривал его как дерево, вам нужно было бы перейти (в коде) до макета, а затем перейти к компоненту навигации, где состояние может быть обновлено (либо путем запроса сервера, либо путем передачи того, что такое обновление ).


person Paul    schedule 04.07.2019    source источник


Ответы (1)


Обычно поток параметров идет вниз, то есть от родителя к потомку, а не в другом направлении, потому что поток рендеринга идет в этом направлении. Вот почему нет возможности передавать параметры вверх по потоку (например, в макет), потому что тогда не существует единого определенного порядка рендеринга.

Стив Сандерсон

Вообще говоря, вы не можете передавать данные из встроенных компонентов в MainLayout.

Однако (ваш вопрос довольно расплывчатый, и вы должны были дать более подробное описание компонентов), вы можете определить службу AppState, которая может обрабатывать состояния задействованных компонентов и обеспечивает доступ к данным состояния из этих компонентов.

См. Этот образец, созданный Стивом Сандерсоном, о том, как реализовать службу AppState. Это также демонстрирует то, что я собираюсь сказать дальше: https://github.com/aspnet/samples/tree/master/samples/aspnetcore/blazor

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

Более конкретный ответ можно получить, если вы предоставите нам очертания ваших компонентов ...

Надеюсь это поможет...

person enet    schedule 04.07.2019