Slide 10
Slide 10 text
一番おおもとの画面にStoreを適用して各画面へ伝える
@main
struct SwiftUIAndReduxExampleApp: App {
// MARK: - Body
var body: some Scene {
// 👉 このアプリで利用するStoreを初期化する
// ※ middlewaresの配列内にAPI通信/Realm/UserDefaultを操作するための関数を追加する
// ※ TestCodeやPreview画面ではmiddlewaresの関数にはMockを適用する
let store = Store(
reducer: appReducer,
state: AppState(),
middlewares: [
// MEMO: 正規の処理を実行するMiddlewareを登録する
// OnBoarding/Home/Archive/Favorite/Profile用Middleware
]
)
// 👉 ContentViewには.environmentObjectを経由してstoreを適用する
WindowGroup {
ContentView()
.environmentObject(store)
}
}
}
// OnBoarding
onboardingMiddleware(), onboardingCloseMiddleware(),
// Home
homeMiddleware(),
// Archive
archiveMiddleware(), addArchiveObjectMiddleware(), deleteArchiveObjectMiddleware(),
// Favorite
favoriteMiddleware(),
// Profile
profileMiddleware(),
API通信やデータ永続化処理経由でActionを発行するための関数
Storeを下層Viewへ渡す
@EnvironmentObject var store: Store
下層View画面要素でStoreを利用したい場合はEnvironmentObject経由で利用する