DEV Community

Sergey Leschev
Sergey Leschev

Posted on • Updated on

Redux-like state container in SwiftUI. Usage.

We can finish our repos search app that calls Github API asynchronously and fetches repositories matching a query.

typealias AppStore = Store<AppState, AppAction, AppEnvironment>

struct SearchContainerView: View {
    @EnvironmentObject var store: AppStore
    @State private var query: String = "Swift"

    var body: some View {
            query: $query,
            repos: store.state.searchResult,
            onCommit: fetch
        ).onAppear(perform: fetch)

    private func fetch() {
        store.send(.search(query: query))

struct SearchView : View {
    @Binding var query: String
    let repos: [Repo]
    let onCommit: () -> Void

    var body: some View {
        NavigationView {
            List {
                TextField("Type something", text: $query, onCommit: onCommit)

                if repos.isEmpty {
                } else {
                    ForEach(repos) { repo in
                        RepoRow(repo: repo)
Enter fullscreen mode Exit fullscreen mode

We divide our screen into two views: Container View and Rendering View. Container View handles the actions and retrieves the needed piece of state from the global state. Rendering View accepts the data and renders it.

I have a clear focus on time-to-market and don't prioritize technical debt. And I took part in the Pre-Sale/RFX activity as a System Architect, assessment efforts for Mobile (iOS-Swift, Android-Kotlin), Frontend (React-TypeScript) and Backend (NodeJS-.NET-PHP-Kafka-SQL-NoSQL). And I also formed the work of Pre-Sale as a CTO from Opportunity to Proposal via knowledge transfer to Successful Delivery.

πŸ›©οΈ #startups #management #cto #swift #typescript #database
πŸ“§ Email:
πŸ‘‹ LinkedIn:
πŸ‘‹ LeetCode:
πŸ‘‹ Twitter:
πŸ‘‹ Github:
🌎 Website:
🌎 Reddit:
🌎 Quora:
🌎 Medium:

Top comments (0)