Skip to content

northofnormal/dependencyInjectionExample

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

import SwiftUI

enum SomeAction {
    case one
    case two
}

struct OriginalView: View {

    var body: some View {
        InjectedView(viewModel: SomeViewModel { action in
            switch action {
            case .one:
                print("1️⃣")
            case .two:
                print("two!")
            }
        })
    }
}


class SomeViewModel: ObservableObject {
    var someAction: (SomeAction) -> Void

    init(action: @escaping (SomeAction) -> Void) {
        someAction = action
    }
}

struct InjectedView: View {
    @ObservedObject var viewModel: SomeViewModel

    var body: some View {
        VStack {
            Button {
                viewModel.someAction(.one)
            } label: {
                Text("One")
            }

            Button {
                viewModel.someAction(.two)
            } label: {
                Text("Two")
            }
        }
    }
}

About

Quick little demo of a di pattern I like, used a lot at a previous job

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages