IfLetStore
public struct IfLetStore<State, Action, Content> : View where Content : View
A view that safely unwraps a store of optional state in order to show one of two views.
When the underlying state is non-nil
, the then
closure will be performed with a Store
that
holds onto non-optional state, and otherwise the else
closure will be performed.
This is useful for deciding between two views to show depending on an optional piece of state:
IfLetStore(
store.scope(state: \SearchState.results, action: SearchAction.results),
then: SearchResultsView.init(store:),
else: Text("Loading search results...")
)
And for performing navigation when a piece of state becomes non-nil
:
NavigationLink(
destination: IfLetStore(
self.store.scope(state: \.detail, action: AppAction.detail),
then: DetailView.init(store:)
),
isActive: viewStore.binding(
get: \.isGameActive,
send: { $0 ? .startButtonTapped : .detailDismissed }
)
) {
Text("Start!")
}
-
Initializes an
IfLetStore
view that computes content depending on if a store of optional state isnil
or non-nil
.Declaration
Parameters
store
A store of optional state.
ifContent
A function that is given a store of non-optional state and returns a view that is visible only when the optional state is non-
nil
.elseContent
A view that is only visible when the optional state is
nil
. -
Initializes an
IfLetStore
view that computes content depending on if a store of optional state isnil
or non-nil
.Declaration
Parameters
store
A store of optional state.
ifContent
A function that is given a store of non-optional state and returns a view that is visible only when the optional state is non-
nil
. -
Declaration
Swift
public var body: some View { get }