Мои коллеги и я столкнулись с проблемой, заключающейся в том, что компонент blazor (мы называем его View) воссоздается при вызове StateHasChanged корневого компонента. Итак, в этот момент выполняется метод OnInitialized View. Если я правильно понимаю, метод OnInitialized выполняется только один раз при первом создании компонента. Но наш компонент View уже создан и хранится в частном поле типа стека.
Код из файла .razor (корневой компонент):
Код: Выделить всё
@foreach (var rec in _navStack)
{
@rec.Fragment
}
Представление проблемы хранится в _navStack. Когда пользователь нажимает какую-либо кнопку, вызывается метод StateHasChanged корневого компонента, а затем выполняется блок foreach. И когда Rec.Fragment (View) визуализируется, выполняется метод OnInitialized View. Эта ситуация вызывает некоторые проблемы, требующие более подробной информации, но сейчас это не важно.
Интересный факт — если мы переместим блок за пределы блока foreach, все работает отлично!
Код: Выделить всё
@foreach (var rec in _navStack)
{
@rec.Fragment
}
стили CSS:
Код: Выделить всё
.viewport {
min-height: 100%;
padding: 0 10px;
overflow: clip;
}
.d-block {
display: block !important;
}
.d-none {
display: none !important;
}
Есть предположения?
Подробнее здесь:
https://stackoverflow.com/questions/793 ... -rerenders