Skip to content

Boxoffice mvi#13

Open
ChoiAnYong wants to merge 7 commits into
mainfrom
boxoffice-MVI
Open

Boxoffice mvi#13
ChoiAnYong wants to merge 7 commits into
mainfrom
boxoffice-MVI

Conversation

@ChoiAnYong
Copy link
Copy Markdown
Collaborator

🌱 작업한 내용

  • MVI로 변경
  • 네비게이션 로직 구현

🌱 PR Point

  • MVI의 기본 구조에 대해서는 이해한 것 같은데 SwiftUI의 NavigationStack을 구현하기 위해서는
    대부분 바인딩을 사용해야 하는 것으로 보입니다. 이 경우 뷰에서 Intent를 거치지 않고 상태 값을 변경하는데
    MVI의 흐름과는 다르다는 생각이 들어서 다른 시도를 해보았지만 결국 실패했습니다.. 이런 경우는 예외적으로
    store 내부에 따로 @published를 사용하여 path를 관리하는 방법 뿐인지 궁금합니다..

@ChoiAnYong ChoiAnYong requested a review from hooni0918 January 12, 2025 05:22
Copy link
Copy Markdown

@hooni0918 hooni0918 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고민한 흔적이 정말 잘 묻어나는 코드네요!

//MARK: - Functions

extension BoxOfficeStore {
@MainActor
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

반복되는 MainActor의 사용이 좀더 개선할 부분이 있을것같은데,,,, 수정을 어떻게 해야하는지가 안보이네요 흠
추후에 같이 고민해보죠!

.environmentObject(store)
}
}
.onAppear {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

@hooni0918
Copy link
Copy Markdown

추가적으로 네비게이션 로직과 관련한 부분은

  1. Navigation 상태는 MVI의 State와 별개로 관리 (Navigation은 UI 계층의 책임으로 보는 관점)
  2. Intent를 통해 비즈니스 로직이 필요한 네비게이션은 Store를 거치도록 하고, 단순 네비게이션은 Coordinator에서 직접 처리

하는 정도의 대체 방법이 있긴 합니다.
현재 우리가 구현하려는 네비게이션 스택과 @publushed의 만남이 사실 건강한 MVI는 아니라고 생각해요.
내부 intent와 state의 경우에도 protocol로 나눠야 하는 부분들이 있구요

하지만 모두 MVI가 처음이다 보니 합숙기간동안의 스프린트동안에는 MVI가 이렇게 나누어지는구나 정도만 이해하고 이해가 안되는 부분들, 뭔가 사용하기에 이상한 부분들을 잘 기록해 두었다가 트러블 슈팅으로 2차 스프린트를 이어나가는게 제 생각에는 포트폴리오에 가장 이상적이라고 생각합니다.
지금 고민한 부분 아주 정확하고 추후 함께 develop 해봅시다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants