У кого-нибудь есть идеи, когда замыкание .sheet
должно быть перерисовано? Должно ли это происходить, когда что-либо в целом body
вызывает обновление, даже если это не удаленно в иерархии?
Например, где cartItemModal
- это свойство @State
, которое не обновляется:
var body: some View {
VStack {
theCartView
// even putting the sheet outside of the cart view entirely, it still gets re-rendered
Text("").sheet(item: $cartItemModal) { (productWithCartItem) -> QuickAddView in
QuickAddView(viewModel: QuickAddViewModel(productDetails: productWithCartItem, cartAPIProvider: self.cartAPIProvider))
}
}
}
Элементы управления в моем моде могут обновлять данные в базовом списке, управляя theCartView
. На самом деле данные не влияют на мой модальный QuickAddView
, который был отображен с собственной структурой. И все же это замыкание вызывается снова, и мой модал перерисовывается.
Добавление полного сэмпла здесь:
https://gist.github.com/sprynmr/66811b088ac50d9f297471d5c70d0eb3
Я думаю, что мойВопрос сводится к следующему: как насчет временных @State
свойств в представлениях, не связанных с изменением базовых данных или управляемых такими операторами, как .sheet
. Если они будут воссозданы в любое время, когда что-либо в body
будет обновлено, то многие люди, вероятно, будут бороться с их переходным состоянием просмотра, возвращающимся в исходное состояние.
Рассмотрим запуск таймера, который получает обновления отсервер и обновляет список, с которого отображается .sheet
. Лист будет воссоздан и @State
будет сброшен.