insub4067/architecturevam
> Vam is a package for support MVI (Uni-Directional Architecture) in SwiftUI.
🤔 What is Vam?
Vam is a package for support MVI (Uni-Directional Architecture) in SwiftUI.
<img width="650" alt="스크린샷 2023-10-15 오후 1 35 16" src="https://github.com/insub4067/ArchitectureVam/assets/85481204/48d203ea-54d4-4080-8255-09982c0bfd82">
✔️ View
struct ContentView: VamView {
typealias Action = ContentViewAction
typealias Model = ContentViewModel
let action: ContentViewAction
@StateObject var model: ContentViewModel
var body: some View {
VStack {
Text("\(model.count)")
Button("Tap to increase count") {
action.increaseCount()
}
}
}
static func build() -> ContentView {
let model = ContentViewModel()
let action = ContentViewAction(model: model)
return .init(action: action, model: model)
}
}✔️ Action
class ContentViewAction: Action<ContentViewModel> {
func increaseCount() {
model?.count += 1
}
}✔️ Model
class ContentViewModel: Model {
@Published var count = 0
}Package Metadata
Repository: insub4067/architecturevam
Default branch: main
README: README.md