-
Notifications
You must be signed in to change notification settings - Fork 5
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
[Fix] - 6차 피드백 반영(시모) #545
Changes from all commits
980c8d4
aec9e5a
536bd34
0cd3205
b86e9b4
e691576
bae53c8
5744486
cc552a5
eb12b5e
e0765c6
6e8ed07
d0a7b8e
72d36b2
f60498b
139522a
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,5 @@ | ||
import { useEffect, useMemo } from "react"; | ||
|
||
import useInfiniteTravelogues from "@queries/useInfiniteTravelogues"; | ||
|
||
import { | ||
|
@@ -32,13 +34,38 @@ import * as S from "./MainPage.styled"; | |
import TravelogueCardSkeleton from "./TravelogueCard/skeleton/TravelogueCardSkeleton"; | ||
|
||
const MainPage = () => { | ||
const { selectedTagIDs, handleClickTag, sortedTags, animationKey } = useMultiSelectionTag( | ||
STORAGE_KEYS_MAP.mainPageSelectedTagIDs, | ||
); | ||
const { sorting, travelPeriod } = useSingleSelectionTag( | ||
STORAGE_KEYS_MAP.mainPageSort, | ||
STORAGE_KEYS_MAP.mainPageTravelPeriod, | ||
); | ||
const { | ||
selectedTagIDs, | ||
handleClickTag, | ||
sortedTags, | ||
multiSelectionTagAnimationKey, | ||
resetMultiSelectionTag, | ||
} = useMultiSelectionTag(STORAGE_KEYS_MAP.mainPageSelectedTagIDs); | ||
|
||
const { | ||
sorting, | ||
travelPeriod, | ||
resetSingleSelectionTags, | ||
singleSelectionAnimationKey, | ||
increaseSingleSelectionAnimationKey, | ||
} = useSingleSelectionTag(STORAGE_KEYS_MAP.mainPageSort, STORAGE_KEYS_MAP.mainPageTravelPeriod); | ||
|
||
const isTagsSelected = useMemo(() => { | ||
return ( | ||
selectedTagIDs.length !== 0 || | ||
sorting.selectedOption !== "likeCount" || | ||
travelPeriod.selectedOption !== "" | ||
); | ||
}, [selectedTagIDs, sorting.selectedOption, travelPeriod.selectedOption]); | ||
|
||
useEffect(() => { | ||
increaseSingleSelectionAnimationKey(); | ||
}, [isTagsSelected, increaseSingleSelectionAnimationKey]); | ||
|
||
const handleClickResetButton = () => { | ||
resetMultiSelectionTag(); | ||
resetSingleSelectionTags(); | ||
}; | ||
|
||
const { travelogues, status, fetchNextPage, isPaused, error } = useInfiniteTravelogues({ | ||
selectedTagIDs, | ||
|
@@ -74,30 +101,35 @@ const MainPage = () => { | |
|
||
<S.TagsContainer> | ||
<S.SingleSelectionTagsContainer> | ||
{isTagsSelected && ( | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 태그가 선택되었을 때, 초기화가 활성화 되는데 그거보단 처음부터 초기화 영역이 있는게 자연스럽다고 생각해요! 시모의 의견은 어떠신가요?! There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이 부분 말했듯 배민을 레퍼런스로 참고했습니다! 초기화 버튼이 생김에 따라 이목을 끌 수 있다는 점 이로 인하여 사용자가 초기화 버튼 존재 여부에 대해 인식할 수 있다는 점을 근거로 해당 방식을 채택하였습니다. 또한 초기화가 되어 있는 가운데 초기화 버튼이 활성화 되어 있다는 것이 오히려 불 필요한 이벤트를 발생시킬 수 있을 거 같아 해당 방법으로 구현하였습니다! 좋은 의견 고마워요 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 의도가 뚜렷해서 좋네요 :) 감사합니다 ㅎㅎ |
||
<Chip | ||
key={`reset-${singleSelectionAnimationKey}`} | ||
label={`초기화`} | ||
isSelected={false} | ||
onClick={handleClickResetButton} | ||
iconPosition="left" | ||
iconType="reset-icon" | ||
/> | ||
)} | ||
<Chip | ||
key={`sorting-${singleSelectionAnimationKey}`} | ||
label={SORTING_OPTIONS_MAP[sorting.selectedOption]} | ||
isSelected={true} | ||
onClick={sorting.handleOpenModal} | ||
> | ||
<Icon iconType="down-arrow" size="8" color={theme.colors.primary} /> | ||
</Chip> | ||
iconPosition="left" | ||
iconType="sort-icon" | ||
/> | ||
<Chip | ||
key={`travelPeriod-${singleSelectionAnimationKey}`} | ||
label={ | ||
travelPeriod.selectedOption | ||
? TRAVEL_PERIOD_OPTIONS_MAP[travelPeriod.selectedOption] | ||
: "여행 기간" | ||
} | ||
iconPosition="right" | ||
isSelected={travelPeriod.selectedOption !== ""} | ||
onClick={travelPeriod.handleOpenModal} | ||
> | ||
<Icon | ||
iconType="down-arrow" | ||
size="8" | ||
color={ | ||
travelPeriod.selectedOption ? theme.colors.primary : theme.colors.text.secondary | ||
} | ||
/> | ||
</Chip> | ||
/> | ||
</S.SingleSelectionTagsContainer> | ||
|
||
<S.MultiSelectionTagsContainer | ||
|
@@ -108,7 +140,7 @@ const MainPage = () => { | |
> | ||
{sortedTags.map((tag, index) => ( | ||
<Chip | ||
key={`${tag.id}-${animationKey}`} | ||
key={`${tag.id}-${multiSelectionTagAnimationKey}`} | ||
index={index} | ||
label={tag.tag} | ||
isSelected={selectedTagIDs.includes(tag.id)} | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -197,7 +197,7 @@ const TravelogueDetailPage = () => { | |
|
||
<TransformFooter | ||
guideMessage="이 여행기를 따라가고 싶으신가요?" | ||
buttonLabel="여행 계획으로 전환" | ||
buttonLabel="여행 계획으로 가져오기" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 확실히 순한국말로 바꾸니깐 더 편안하고 좋은거같네요 ㅎㅎ |
||
onTransform={handleTransform} | ||
> | ||
<S.LikesContainer> | ||
|
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.
아마 useMemo로 감싸신 이유가 useEffect의 의존성 배열에 들어가서 참조 값을 고정하기 위해 사용한걸로 파악되는데, 의존성 배열에 isTagsSelected를 추가한 이유를 알 수 있을까요?!
제 린트에선 오히려 `increaseSingleSelectionAnimationKey`가 빠졌다고 메시지가 보여서요!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.
자세한 코드는 모르지만, effect와 memo를 사용하지 않고, handleClickResetButton에 increaseSingleSelectionAnimationKey를 추가해도 동일하게 동작하니 참고 부탁드려요!
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.
우선 의존성 부분은 useCallback에 대해서 잘 모르고 있었다 보니 저 부분에 린트 문제가 생긴 거 같아요 해당 부분은 수정하였습니다! 위의 코드의 의도는 초기화 버튼 생성 유무에 따라 위 버튼들에 에니메이션을 주고싶었어요. 그냥 띡 생기는 것이 버그 같다는 예전 피드백을 근거로 해서 해당 부분을 추가했습니다. 그래서 초기화 버튼을 누를 때도 animationKey를 증가시켜 에니메이션을 발생하기도 하지만 초기화 버튼이 사라질 때도 해당 부분이 있으면 좋겠다고 생각하였어요. 그 결과 tag의 선택 여부에 따라 즉, isTagsSelected 의 값이 바뀔 때 마다 에니메이션이 발생하게 했습니다!