无法更新SwiftUI中Redux流的全局状态

无法更新SwiftUI中Redux流的全局状态,swift,swiftui,Swift,Swiftui,我正在尝试在SwiftUI中实现Redux状态,并且在执行操作创建者之后,我一直在更新全局状态。我不知道在商店调度功能中该做什么 // Store.swift typealias ActionCreator = (_ dispatch: @escaping (Action) -> ()) -> () func getMovies() -> ActionCreator { return { dispatch in DispatchQ

我正在尝试在SwiftUI中实现Redux状态,并且在执行操作创建者之后,我一直在更新全局状态。我不知道在商店调度功能中该做什么

// Store.swift 

typealias ActionCreator = (_ dispatch: @escaping (Action) -> ()) -> ()

func getMovies() -> ActionCreator {
    return { dispatch in
        
        DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
            dispatch(.populateMovies([Movie(title: "ABC")]))
        }
    
    }
}

class Store: ObservableObject {
    
    var reducer: Reducer
    @Published private (set) var appState: AppState
    
    init(appState: AppState, reducer: Reducer) {
        self.appState = appState
        self.reducer = reducer
    }
    
    func dispatch(_ dispatch: ActionCreator) {
        // how to send the movies to the reducer to update the state 
        //self.reducer.update(&appState, dispatch)
    }
}



// ContentView: 

store.dispatch(getMovies()) 

出于好奇,您有什么理由想在SwiftUI中使用Redux流吗?为什么不在纯SwiftUI中实现呢?Redux流允许一点变化或真相。因此,它使将来调试东西变得更容易。它与
@EnvironmentObject
有何不同?看起来(至少对我来说)你把事情搞得太复杂了……在幕后我使用的是EnvironmentObject,但请记住,你无法在视图之外控制EnvironmentObject。因此,Redux允许维护一个存储,并且只有一种方法可以更新存储,即使在非视图文件中也是如此。我建议很少阅读Redux的工作原理。为此,我通常使用DependencyInjection+EnvironmentObject。但我也会看看Redux。