iOS TCA architecture parent intercept children's action

569 Views Asked by At

Now I have ListTabView it is parent and want to show MakeCardView by sheet. I am using @PresentationState for showing children View.

It works well, but the problems is children view' s all action intercept by parents view.

struct ListTabFeature: Reducer {
    
    //MARK: State
    struct State: Equatable {
        @PresentationState var addNewCard: MakeCardFeature.State?
    }
    
    //MARK: Action
    enum Action: Equatable {
        case tabMakeCardButton
        case addNewCard(PresentationAction<MakeCardFeature.Action>)
    }
    
    //MARK: Reducer
    func reduce(into state: inout State, action: Action) -> Effect<Action> {
        switch action {
        case .tabMakeCardButton:
            print(" make card btn ")
            state.addNewCard = MakeCardFeature.State()
            return .none
        case .addNewCard(.dismiss):
            print(" dismiss")
            state.addNewCard = nil
            return .none
        case .addNewCard(.presented(.tabCancelButton)):
            print(" cancel tabed")
            state.addNewCard = nil
            return .none
        default:
            print(" default")
            return .none
        }
    }
}
.sheet(store: self.store.scope(state: \.$addNewCard, action: ListTabFeature.Action.addNewCard)) { store in
                    MakeCardView(store: store)
                }

when I action tab children view's button, it keep log default

this is my first project to using TCA! please help!

0

There are 0 best solutions below