Redux-like state container in SwiftUI. Reducer composition.

Redux-like state container in SwiftUI. Reducer composition.

Important component of?Redux-like?state container is?Reducer. We can extract and compose it as we do with state struct. It will allow us to respect a?Single Responsibility?principle and keep our reducers small and clean.

enum AppAction {
    case calendar(action: CalendarAction)
    case trends(action: TrendsAction)
}

func trendsReducer(
    state: inout TrendsState,
    action: TrendsAction
) -> AnyPublisher<TrendsAction, Never> {
    // Implement your state changes here
}

func calendarReducer(
    state: inout CalendarState,
    action: CalendarAction
) -> AnyPublisher<CalendarAction, Never>{
    // Implement your state changes here
}

func appReducer(
    state: inout AppState,
    action: AppAction
) -> AnyPublisher<AppAction, Never> {
    switch action {
    case let .calendar(action):
        return calendarReducer(&state.calendar, action)
            .map(AppAction.calendar)
            .eraseToAnyPublisher()
    case let .trends(action):
        trendsReducer(&state.trends, action)
            .map(AppAction.trends)
            .eraseToAnyPublisher()
    }

    return Empty().eraseToAnyPublisher()
}        



Redux?provides a single source of truth, which eliminates tons of bugs produced by multiple states across the app. Best practices. Normalization and composition keep our app state simple and maintainable.


Contacts

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:?[email protected]

?? LinkedIn:?https://www.dhirubhai.net/in/sergeyleschev/

?? LeetCode:?https://leetcode.com/sergeyleschev/

?? Twitter:?https://twitter.com/sergeyleschev

?? Github:?https://github.com/sergeyleschev

?? Website:?https://sergeyleschev.github.io

?? DEV Community: https://dev.to/sergeyleschev

?? Reddit: https://reddit.com/user/sergeyleschev

?? Quora: https://quora.com/sergey-leschev

?? Medium: https://medium.com/@sergeyleschev

要查看或添加评论,请登录

社区洞察

其他会员也浏览了