-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
refactor: preview 오류 해결 및 state Hoisting 검토 #197
Open
pengcon
wants to merge
8
commits into
refactor-state-hoisting
Choose a base branch
from
refactor-state-hoisting-K041
base: refactor-state-hoisting
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
jay200333
approved these changes
Jan 9, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
고생하셨습니다. 😁
@Composable | ||
fun QuestionDetailScreenPreview() { | ||
fun QuestionDetailScreenPreview( | ||
@PreviewParameter(QuestionDetailScreenPreviewParameterProvider::class) question: Question, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Preview를 위한 클래스를 만들어두고 @PreviewParameter를 이용해 재사용 할 수 있군요. 좋은 방법인 것 같습니다. 😁
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
👩🌾 진행한 작업
✅ NotificationScreenPreview 언어 한글로 변경
✅ CreateQuestionScreenPreview 오류 해결, 언어 한글로 변경
✅ CreateStudyScreenPreview 언어 한글로 변경
✅ OwnerQuizResultScreenPreview 오류 수정, 언어 한글로 변경
✅ GeneralQuizResultScreenPreview 오류 수정, 언어 한글로 변경
✅ QuestionDetailScreenPreview 오류 수정, 언어 한글로 변경
📷 작업 결과(사진)
QuestionDetailScreenPreview
🗣️ 공유할 내용
프리뷰 살린 방법
프리뷰는 태환님의 블로그 글을 통해 오류를 해결하였습니다.
간단하게 설명드리면 저희가 상태를 가지고 있게 한 최상단 컴포저블이 Preview는 동작하지 않지만 외부에서 활용할 코드로 활용하는 용도였더라고요!
PreviewParameterProvider 활용
QuestionDetailScreenPreview는 객관식과 낱말맞추기 두개의 프리뷰가 필요합니다.
이 두개를 PreviewParameterProvider를 사용하면 프리뷰 한개로 각각 랜더링이 가능합니다~
드로이드 나이츠 참고하다 발견했고, 이 블로그 글을 읽으면 이해가 되실겁니다!
미리보기용 데이터 String 추출 여부
드로이드 나이츠를 보니 미리보기용 데이터에서 사용되는 String을 추출한것도있고 아닌곳도 있더라고요!
무슨 근거로 각각 그렇게 구성했는지 확인 후 저희 모두 일괄적으로 적용하면 좋을 것 같습니다!
State Hoisting
분명 브랜치 이름은 State Hoisting인데 원래도 다들 신경써주셔서 나름 잘 되어있어서 건들게 없었습니다😅
하지만 제가 공부하면서 느끼지만, 불필요한 것도 hoisting이 되어있다고 생각합니다!
예를들어
CreateQuestionScreen
에서 snackBarHostState와 focusRequester가 호이스팅 되어있는데,Stateless하게 구성한 컴포저블 함수의 안에서만 쓰이기 때문에 호이스팅을 하여 얻는 이점이 거의 없는거 같습니다.
오히려 프리뷰에서도 snackBarHostState랑 focusRequester를 선언해줘야해서 불편함이 커집니다..!
공식문서에서도 무조건 호이스팅이 옳은게 아니다 라고 나와있고, (내부에서만 사용되면 호이스팅의 이점이 거의 없다 서술)
저희 프로젝트에서도 다른 스크린에선 snackBarHostState는 호이스팅을 안한 곳도 있더라고요.
제 기준에서 생각했을땐 snackBarHostState정도는 state를 내려줘도 될거같은데, 여러분의 생각도 듣고싶습니다~
(제 코드에는 토론 후에 적용하려고 snackBarHostState에 대한 호이스팅 변경은 하지 않았습니다~)
(토요일날 토론해봐도 좋을 거 같아요~)
closed #196