🔄 ArchitectureVam (架构Vam)

License: MIT Static Badge Static Badge

🤔 什么是 Vam?

Vam 是一个用于支持 SwiftUI 中 MVI(单向数据流架构)的软件包。

스크린샷 2023-10-15 오후 1 35 16

✔️ 视图 (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
}