Связь между компонентами может быть реализована тремя способами, в зависимости от ваших требований и потребностей.
Родительский компонент может взаимодействовать со своим дочерним компонентом, передавая параметры компонента и вызывая события, чтобы сообщить родителю, что что-то произошло, и наоборот.
Вы можете включить функцию CascadingValue для передачи значения всем дочерним элементам в потоке, которые определяют свойство CascadingParameter. Каскадное значение может быть простой строкой, но также может быть полным компонентом. Это достигается путем установки атрибута Value для CascadingValue с ключевым словом this из компонента, которому вы хотите передать ссылку, например:
SomeComponent.razor
<CascadingValue Value="this">
@ChildContent
</CascadingValue>
Мне не нравится использовать эту функцию. Собственно, никогда не использую. Утверждается, что его использование может быть проблематичным и т. Д. Однако это законная часть Blazor, и нет причин не использовать ее, если хотите ...
- Служба, реализующая шаблон состояния и шаблон уведомления. Обычно вы создаете такую службу для управления состоянием данных вашего приложения, это включает в себя хранение данных в коллекциях, извлечение данных из базы данных и т. Д., Позволяя компонентам хранить данные в коллекциях служб, уведомлять компоненты, вызывая обработчик событий, и передавать им данные. просто добавлен другим компонентом и т. д.
Учитывая приложение Blazor по умолчанию, созданное с использованием шаблона сервера Visual Studio 2019 Blazor. Как создать ГЛОБАЛЬНЫЙ объект, доступный со всех страниц и компонентов Razor.
Вам следует реализовать услугу. Смотрите номер 3.
Создать статический класс?
Нет, никаких статических классов. Создать услугу
Каков рекомендуемый подход в Blazor?
Все зависит от ваших потребностей и требований ...
Как сделать так, чтобы значение «Текущий счетчик» было видимым и «динамически» обновлялось на страницах MainLayout, NavMenu, Index?
Только путем создания службы, которая позволяет передавать текущий счетчик из заданного места и передавать его другим компонентам, таким как MainLayout, NavMenu, Index pages.
Примечание: я подробно ответил на такие вопросы с помощью рабочего кода. Я понятия не имею об их местонахождении (пока что 400 ответов), но вы можете зайти на страницу моего профиля и найти их.
Надеюсь это поможет...
person
enet
schedule
22.04.2020