showAlert 변수 mvi 패턴에서의 사용법
안녕하세요 애구마님!
앱 클라이언트 개발 시, 보통 showAlert 같은 UI 동작을 제어하는 변수는 화면(Screen)에서 직접 관리하는 경우가 많다고 들었어요!
그런데 만약 진행 할 프로젝트에 MVI 패턴을 적용한다면, 이 showAlert 같은 UI 상태들은 별도의 상태(State) 클래스에서 관리하는 게 맞을까요?
즉, MVI 패턴에서는 showAlert를 포함한 모든 UI 상태를 상태 클래스(State)로 중앙 집중 관리하고, 사용자 동작은 Intent로 받아서 상태를 변경하는 방식으로 관리하면 되는 건지 궁금합니다.
이 부분에 대해 조언 해주시면 정말 감사드리겠습니다!
回答 2
0
안녕하세요 진성님
제가 MVI패턴은 잘모르지만, 아마 상태를 중앙에서 관리한다고 하더라도, showAlert같은 상태는 뷰에 놔두는게 나중에 코드 관리에 더 용이할 것 같습니다.
showAlert는 앱의 전반적인 상태라기 보다는 특정 뷰에 알럿을 보여줄지 말지에 대한 뷰에 관한 기능이기 때문에 중앙으로 옮기면 나중에 관리하기가 힘들거 같아요
중앙에서 여러가지 상태가 관리될텐데 거기에 여러가지 뷰들의 showAlert이 있다면,
예를들어
mainViewShowAlert, settingViewShowAlert 이렇게 있다고 한다면, 뷰가 몇개 없을때는 해당 뷰를 찾는게 쉽겠지만, 뷰가 엄청 많아질때는 뷰이름만으로는 알아보기가 힘들것 같습니다. 그래서 해당 뷰에 showAlert을 놔두는게 더 관리측면에서 용이할거 같습니다.
제생각에는 상태를 중앙에서 관리한다면 로그인여부같이 앱 전반에 연관되는 상태들을 중앙에서 모아서 관리하는게 아닐까 싶네요.
감사합니다~!
0
안녕하세요, 인프런 AI 인턴입니다. 주진성님.
MVI (Model-View-Intent) 패턴은 상태 관리를 중심으로 하는 아키텍처 패턴으로, 애플리케이션의 전체 상태를 단일 중앙 저장소에서 관리하는 것이 핵심입니다. 이는 상태의 일관성과 변경 관리를 쉽게 합니다.
MVI 패턴에서 UI 상태 관리
상태(State) 클래스:
- MVI 패턴에서는 모든 UI 상태, 예를 들어
showAlert와 같은 상태도 중앙의 상태 클래스에서 관리하는 것이 일반적입니다. 따라서showAlert와 같은 UI 상태도 상태 클래스에서 관리하는 것이 맞습니다.
- MVI 패턴에서는 모든 UI 상태, 예를 들어
사용자 동작 처리:
- Intent는 사용자 동작을 나타내며, 이러한 Intent에 따라 상태 변화를 결정하게 됩니다. 즉, 사용자가 어떤 동작을 하면 해당 Intent가 발생하고, 이 Intent를 처리하여 상태를 업데이트합니다.
- Intent는 사용자 동작을 나타내며, 이러한 Intent에 따라 상태 변화를 결정하게 됩니다. 즉, 사용자가 어떤 동작을 하면 해당 Intent가 발생하고, 이 Intent를 처리하여 상태를 업데이트합니다.
상태 변경:
- 중앙 상태 클래스는 이런 Intent에 반응하여 상태를 변화시키며, 그 결과를 View에 반영합니다. 이는 UI 구성 요소를 직접 업데이트하지 않고도 화면을 업데이트할 수 있도록 해줍니다.
- 중앙 상태 클래스는 이런 Intent에 반응하여 상태를 변화시키며, 그 결과를 View에 반영합니다. 이는 UI 구성 요소를 직접 업데이트하지 않고도 화면을 업데이트할 수 있도록 해줍니다.
참고할 만한 유사 질문
- “MVI 패턴에서의 상태 관리”: 유사한 상황에서 MVI 패턴에 대한 상태 관리에 관해 논의하는 글입니다. 이를 참고하여 MVI 구조에 대한 이해를 높이실 수 있습니다.
이러한 방식은 코드의 가독성을 높이고, 상태 관리와 관련된 버그를 줄이는 데 유리합니다. 따라서 학습 목적으로도 MVI 패턴을 적용해보시는 것을 권장합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
확인 버튼 만들 때 폰트 색상 화이트 주는 위치 문의드려요.
1
65
2
Button(action: label:)이 강의와 달라요!
1
60
2
HStack과 VStack에서 alignment와 spacing 방향이 이해가 잘 안갑니다.
1
69
2
modifiers 창이 안보여요.
1
97
2
swift vs swiftUI
1
64
1
끝말잇기 로직 구현 중 ios 16 (iphone 16) 시뮬레이터 영어 입력 불가
1
81
1
@Binding된 객체는 자동으로 저장이 되나요?
1
96
2
섹션5. Class로 Todo 데이터 관리하기 부분에서 질문 있습니다.
1
83
2
JSON_Decodable.playground에서 print문이 안찍히는 문제
0
120
2
List를 넣으니 위치가 제대로 조정이 되던데 그럼 Spacer는 따로 넣을 필요가 없는걸까요?
1
105
1
콘솔창에 값이 안찍히고 있습니다.
1
142
2
todo 앱에서 미리 적어놨던 요소들은 왜 안나오나요?
1
131
2
Swift 6 업데이트 이후 Todo 예제 실행 오류
1
188
2
ToDo 앱 @Observable 기능(?) 질문입니다
0
209
2
Todo 앱 @Observable 질문입니다
2
191
2
VStack, HStack으로 뷰 구성하기 강의 padding 질문입니다
1
222
1
@State 특성(?) 질문입니다
1
161
2
6-7) 이미지 사이즈 지정 위치 질문드립니다.
1
170
1
강의 자료를 모아보는 프로그램을 제작해보려고 합니다!
0
180
1
NavigationLink 질문
1
149
1
서적 추천 부탁드립니다!
2
192
1
질문합니다. 섹션 4 - 10 [투두 삭제기능 구현하기(onDelete)]
1
217
2
섹션4-4 'NavigationStack' 오류가 납니다
1
228
1
강의를 들으면서 앱을 만들어보고 있습니다
1
262
3

