Dependency Injection with View Models + TCA

Hello,

I have a simple ContentView with two view models injected, which works fine. Now, I need to add a ComposableArchitecture store file (store) to ContentView. If I can, how do I inject it into my init? Or can I not? And should I use singletons? Thanks a lot.

import SwiftUI
import ComposableArchitecture

struct ContentView: View {
    //let store: StoreOf<SettingsFeature>
    private let employeeViewModel: EmployeeViewModel
    private let workViewModel: WorkViewModel
    
    init(employeeViewModel: EmployeeViewModel, workViewModel: WorkViewModel) {
        self.employeeViewModel = employeeViewModel
        self.workViewModel = workViewModel
    }
    
    var body: some View {
        VStack {
            List(employeeViewModel.employees, id: \.id) { employee in
                HStack {
                    Text(employee.name)
                }
            }
            .listStyle(.plain)
        }
    }
}

#Preview {
    ContentView(
        employeeViewModel: EmployeeViewModel(
            dataProvider: MockEmployeeDataProvider()
        ),
        workViewModel: WorkViewModel(dataProvider: MockWorkDataProvider())
    )
}

@Sumo69107

for future reference, evolution is for language changes. TCA questions and other library questions are best for their respective category under “related projects”

1 Like