Open guillevc opened 3 years ago
Using @StateObject
instead of @ObservedObject
for view-owned view models seems to stop views from recreating view models on every view refresh, even if some parent view is changing.
So it could be a potential improvement, at least it's keeping things in place for me.
First of all, thanks for all the work put onto this project. I'm building a project based off of this and it's looking really good, but I am encountering some issues that I explain below.
To summarize:
ViewA
navigates toViewB
. To achieve this, I implement aNavigationLink(destination: ViewB(viewModel: ViewBViewModel()))
. When insideViewB
, some app state is modified, whichViewA
receives with aonReceive
. In theonReceive
callback,ViewA
makes some changes to its view like disabling a button. This causesViewA
to recalculate itself, which initializesViewBViewModel
again, losing all the changes, including all loaded data from the repository, leaving the user onViewB
with allLoadable
set to.notRequested
, and all viewModel state lost.This also happens if the app state is implemented through a
EnvironmentObject
. If I modify some environment object fromViewB
thatViewA
uses,ViewA
recreates itself, losing all the state onViewBViewModel
.I am also having some issues related to this when navigating back from a view to its predecessor. In some cases, if I navigate from some view
ViewA
to other viewViewB
, when dismissingViewB
,ViewA
gets recalculated, which initializesViewBViewModel
again.Has anyone encountered this behaviour and came to a solution?