Answer a question

I've been implementing Redux in my SwiftUI Project successfully but struggle when it comes to handling bindings properly. I want to use the binding functionality of SwiftUI while also storing the information in the Redux State.

As you see this kind of contradicts itself since the state can't be bound two-way. This is my current code

@State var tab: Tab = .tab1
TabView(selection: $tab) { ... }

Ideally it should be comfortably usable like this if it's possible. I am also open to other ideas, that's just what i initially came up with - it's far from perfect.

@State var store = ReduxStore(...)
TabView(selection: $store.state.tab) { ... }

Answers

I figured out how to handle such cases. The solution for me is a Binding like:

let tabBinding = Binding<Tab> (
    get: { self.store.state.currentTab }, // return the value from the state
    set: { self.store.dispatch(action: NavigationAction.updateTab(tab: $0)) } // send the action here
)

Although this probably could be beautified it works, is pretty straight forward and solves the problem of working with Bindings in Redux.

Logo

React社区为您提供最前沿的新闻资讯和知识内容

更多推荐