View
extension View
-
Fires when a child view dispatches an action.
Declaration
Swift
@available(*, deprecated, message: "Use middleware instead.") @inlinable public func onAction(perform: @escaping OnActionViewModifier.ActionModifier) -> some ViewParameters
performCalls the closure when an action is dispatched. An optional new action can be returned to change the action.
Return Value
The modified view.
-
Sends the provided action when the view appears.
Declaration
Swift
@inlinable public func onAppear(dispatch action: Action) -> some ViewParameters
actionAn action to dispatch every time the view appears.
Return Value
The modified view.
-
Sends the provided action plan when the view appears.
In the follow example an ActionPlan is created that automatically updates a list of todos when the filter property of the TodoList state changes. All the view needs to do is dispatch the action when it appears.
// In the TodoListAction file: enum TodoListAction: Action { case setTodos([TodoItem]) case setFilterBy(String) } extension TodoListAction { static func queryTodos(from services: Services) -> Action { ActionPlan<AppState> { store in store.didChange .filter { $0 is TodoListAction } .map { _ in store.state?.todoList.filterBy ?? "" } .removeDuplicates() .flatMap { filter in services .queryTodos(filter: filter) .catch { _ in Just<[TodoItem]>([]) } .map { todos -> Action in TodoListAction.setTodos(todos) } } } } } // In a SwiftUI View: @Environment(\.services) private var services @MappedState private var todos: [TodoItem] var body: some View { Group { renderTodos(todos: todos) } .onAppear(dispatch: TodoListAction.queryTodos(from: services)) }Declaration
Swift
@inlinable public func onAppear<T>(dispatch action: RunnableAction, cancelOnDisappear: Bool) -> some ViewParameters
actionAn action to dispatch every time the view appears.
cancelOnDisappearIt will cancel any subscription from the action when the view disappears. If false, it keeps the subscription alive and reppearances of the view will not re-call the action.
Return Value
The modified view.
-
Injects a store into the environment.
The store can then be used by the
@EnvironmentObjectproperty wrapper. This method also enables the use ofView.mapState(updateOn:_:)to map substates to a view.struct RootView: View { // Passed in from the AppDelegate or SceneDelegate class. var store: Store<AppState> var body: some View { RootAppNavigation() .provideStore(store) } }Declaration
Swift
public func provideStore<State>(_ store: Store<State>) -> some View where State : EquatableParameters
storeThe store object to inject.
Return Value
The modified view.
-
Undocumented
Declaration
Swift
public func provideStore(_ store: AnyStore) -> some View
View on GitHub
View Extension Reference