ComposableArchitecture Documentation

Structure IfLet​Store

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!")
}
%25 IfLetStore IfLetStore View View IfLetStore->View

Conforms To

View

Initializers

init(_:​then:​else:​)

public init<IfContent, ElseContent>(
    _ store: Store<State?, Action>,
    @ViewBuilder then ifContent: @escaping (Store<State, Action>) -> IfContent,
    @ViewBuilder else elseContent: @escaping () -> ElseContent
  ) where Content == _ConditionalContent<IfContent, ElseContent>  

Initializes an IfLetStore view that computes content depending on if a store of optional state is nil or non-nil.

Parameters

store Store<State?, Action>

A store of optional state.

if​Content @escaping (Store<State, Action>) -> 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.

else​Content @escaping () -> Else​Content

A view that is only visible when the optional state is nil.

init(_:​then:​)

public init<IfContent>(
    _ store: Store<State?, Action>,
    @ViewBuilder then ifContent: @escaping (Store<State, Action>) -> IfContent
  ) where Content == IfContent?  

Initializes an IfLetStore view that computes content depending on if a store of optional state is nil or non-nil.

Parameters

store Store<State?, Action>

A store of optional state.

if​Content @escaping (Store<State, Action>) -> 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.

Properties

body

public var body: some View