Skip to content
/ Reactor Public

The most advanced state management framework for SwiftUI.

Notifications You must be signed in to change notification settings

vmanot/Reactor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

Reactor

A state management framework for SwiftUI.

Why

Reactor is a Flux-inspired, reactive state management

struct ExampleView: ReactorView {
    let reactor: Reactor
    
    init(reactor: Reactor) {
        self.reactor = reactor
    }
    
    func makeBody(reactor: Reactor) -> some View {
        Group {
            if reactor.status(of: .foo) == .active {
                ActivityIndicator()
            } else {
                reactor.taskButton(for: .foo) {
                    Text("Run foo!")
                }
            }
        }
    }
}

extension ExampleView {
    struct Reactor: ViewReactor {
        enum Action: Hashable {
            case foo
        }
        
        @ViewReactorEnvironment() var environment
    }
}

extension ExampleView.Reactor {
    func task(for action: Action) -> ActionTask {
        switch action {
            case .foo:
                return Just(())
                    .delay(for: .seconds(1), scheduler: DispatchQueue.main)
                    .eraseToActionTask()
        }
    }
}

About

The most advanced state management framework for SwiftUI.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages