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