네 그럼요 질문 해주세요! 프로젝트에 도움을 드리게되어 영광입니다!
감사합니다! 처음 TCA를 접했는데도 강의가 워낙 잘 되어 있어서 시간이 조금 걸리긴 했지만 무난(?)하게 이해도 했고, 실제 프로젝트에도 적용해볼 수 있었습니다. 강의에서 다룬 것처럼 마이페이지 → [이메일 / 프로필 / 닉네임] 수정 화면처럼 단일 깊이의 화면 이동은 이해가 잘되고, 구현도 잘 하고 있습니다! 그런데 실제 앱에서는 인스타그램처럼 게시물 → 사용자 A 프로필 → 사용자 A의 팔로우 리스트 → 사용자 B 프로필 → 사용자 B의 팔로우 리스트… 이런 식으로 계속 깊어지는 화면 이동 구조가 자주 등장하는데, 이 부분에서 어려움을 겪고 있습니다. 제가 강의에서 어떤 부분을 놓친 건지, 아니면 이런 다층(?), 중첩(?) 네비게이션 패턴은 원래 TCA에서 조금 까다로운 편인지 조언을 얻고 싶습니다! 혹시 몰라서 현재 구현한 방법을 말씀드리면 마이페이지에 관한 네비게이션 구조를 만들고 재활용 가능할 줄 알았는데, 그러기만하면 터져버려서 지금은.. 마이페이지에서 이동가능한 케이스를 [팔로우/팔로잉 리스트, 게시물] 화면 으로 가정한다면 예를 들어 1번 탭이 게시글 관련이라고 한다면 결국 마이페이지로 들어가야하잖아요? 2번 탭이 릴스/쇼츠 관련탭이라고 한다면 여기서도 결국 마이페이지로 들어가야하구요 그런데 지금은 각 탭 화면에서 마이페이지 화면전환 케이스를 전부 동일하게 복붙해서 사용 중이에요 ㅜ
답변에 알람을 못봐서 너무 늦어졌네요 죄송합니다.. 터져버린 원인은 모르겠지만 네비게이션 구조를 만들고 재활용이 가능한데요 예로 네비게이션을 담당하는 하위 리듀서를 만들어 두고 해당 리듀서에 진입할 스코프를 모두 지정해준뒤에 Scope(state: \.profile, action: \.profile) { ProfileFeature() } 부모 탭마다 StackState로 관리하면 될거같습니다 state.path.append(.profile(ProfileFeature.State(userId: "me"))) 여기에는 줄넘김이 잘 되지않아 읽기 어려우실거같네요ㅠㅠ @Reducer struct Path { @ObservableState enum State: Equatable { case profile(ProfileFeature.State) } enum Action { case profile(ProfileFeature.Action) } var body: some ReducerOf<Self> { Scope(state: \.profile, action: \.profile) { ProfileFeature() } } } @Reducer struct HomeTabFeature { @ObservableState struct State: Equatable { var path = StackState<Path.State>() } enum Action { case path(StackAction<Path.State, Path.Action>) case didTapMyProfile } var body: some ReducerOf<Self> { Reduce { state, action in switch action { case .didTapMyProfile: state.path.append(.profile(ProfileFeature.State(userId: "me"))) return .none ...




