Skip to content

gunoooo/ReactorKit-SwiftUI

Repository files navigation

ReactorKit SwiftUI

Swift CocoaPods Platform

ReactorKit-SwiftUI

ReactorKit-SwiftUI is an extension of devxoul's ReactorKit, specifically designed to work with SwiftUI.

Usage

let reactor = MyReactor() // A reactor is the same as in ReactorKit.
let view = MyView(reactor: reactor)

struct MyView: ReactorView {
  var reactor: MyReactor
  
  func body(reactor: MyReactor.ObservableObject) -> some View {
    // this is called when the state updates.
    VStack {
      Button("Hello") {
        reactor.action.onNext(.helloTapped)
      }
      Text(reactor.state.title)
    }
  }
}

Use Cases

ReactorKit-SwiftUI is useful in the following scenarios:

  • When you want to convert your existing ReactorKit-based project to SwiftUI while keeping all business logic unchanged.
  • When you are using RxSwift and want to apply SwiftUI in your project.
  • When you want to use both ReactorKit and SwiftUI together seamlessly.

Examples

  • Counter: The most simple and basic example of SwiftUI-ReactorKit

Dependencies

Requirements

  • Swift 5
  • iOS 13
  • macOS 10.15
  • tvOS 13.0
  • watchOS 6.0

Installation

Podfile

pod 'SwiftUIReactorKit'

Package.swift

let package = Package(
  name: "MyPackage",
  dependencies: [
    .package(url: "https://github.com/gunoooo/ReactorKit-SwiftUI.git", .upToNextMajor(from: "1.0.0"))
  ],
  targets: [
    .target(name: "MyTarget", dependencies: ["SwiftUIReactorKit"])
  ]
)

ReactorKit-SwiftUI does not support Carthage.

License

ReactorKit-SwiftUI is under MIT license. See the LICENSE for more info.

About

An extension of devxoul's ReactorKit, specifically designed to work with SwiftUI

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published