-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
3809ba2
commit 708d13d
Showing
6 changed files
with
12 additions
and
73 deletions.
There are no files selected for viewing
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,26 +1,14 @@ | ||
import { useTabContext } from '@hooks/useTabContext'; | ||
|
||
/** | ||
* TabItem 컴포넌트는 현재 활성화된 탭에 속한 내용을 표시하며, | ||
* useTabContext 커스텀 훅을 사용하여 탭 컨텍스트로부터 | ||
* 현재 활성 탭을 가져와 화면에 표시함 | ||
*/ | ||
|
||
type TabItemProps = { | ||
index: string; //탭의 식별자 | ||
children: React.ReactNode; //해당 탭의 내용 | ||
index: string; | ||
children: React.ReactNode; | ||
}; | ||
|
||
//특정 탭 내용을 렌더링함 | ||
const TabItem = ({ index, children }: TabItemProps) => { | ||
const { activeTab } = useTabContext(); | ||
//useTabContext 커스텀 훅을 사용하여 현재 활성 탭을 가져옴. | ||
//이를 위해 useTabContext는 TabContext로부터 | ||
//탭 관련 상태를 가져와서 현재 활성 탭을 반환. | ||
|
||
return <>{activeTab === index && children}</>; | ||
//현재 활성 탭이 현재의 index와 일치하면 children을 렌더링 | ||
//선택한 탭에 속한 내용만 화면에 나타낼 수 있도록 하는 부분 | ||
}; | ||
|
||
export default TabItem; |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,10 +1,12 @@ | ||
export enum TAB_CONSTANTS { | ||
enum TAB_CONSTANTS { | ||
PERFORMANCE = '공연', | ||
EVENT_SHOW = '행사', | ||
RECRUITMENT = '모집공고', | ||
APPLY_PARTICIPATION = '참여신청한 행사', | ||
BOOKMARKED_EVENT = '북마크한 행사', | ||
} | ||
|
||
export const CURRENT_MAIN_TAB_KEY = 'CURRENT_NEWS_TAB'; | ||
export const CURRENT_PROFILE_TAB_KEY = 'CURRENT_PROFILE_TAB'; | ||
const CURRENT_MAIN_TAB_KEY = 'CURRENT_NEWS_TAB'; | ||
const CURRENT_PROFILE_TAB_KEY = 'CURRENT_PROFILE_TAB'; | ||
|
||
export { TAB_CONSTANTS, CURRENT_MAIN_TAB_KEY, CURRENT_PROFILE_TAB_KEY }; |
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
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,30 +1,11 @@ | ||
/** | ||
* TypeScript를 사용하여 객체에서 특정 값에 해당하는 키를 | ||
* 검색하는 유틸리티 함수인 getKeyByValue를 정의 | ||
* 이 함수는 주어진 객체(일반적으로 열거형(enum) 객체와 같이 | ||
* 키-값 쌍을 가지는 객체)에서 주어진 값에 해당하는 키를 찾아 | ||
* 반환하거나, 값과 일치하는 키가 없는 경우 null을 반환함 | ||
*/ | ||
|
||
/** | ||
* getKeyByValue 함수는 두 개의 매개변수를 가짐. | ||
* enumObj는 객체로, 키-값 쌍을 포함하며, value와 일치하는 키를 찾을 대상 | ||
* value는 찾고자 하는 값 | ||
*/ | ||
export function getKeyByValue<T extends { [index: string]: string }>( | ||
enumObj: T, | ||
value: string, | ||
): keyof T | null { | ||
for (const key in enumObj) { | ||
//함수 내에서 for...in 루프를 사용하여 enumObj 객체의 모든 키를 반복 | ||
if (enumObj[key] === value) { | ||
//각 반복에서 현재 키(key)에 해당하는 값(enumObj[key])을 가져와서, 이 값이 value와 일치하는지 확인 | ||
return key as keyof T; | ||
//일치하는 키를 찾으면 해당 키를 반환하고, | ||
//as keyof T를 사용하여 타입 캐스팅을 수행하여 | ||
//해당 키가 객체 enumObj의 키로 존재하는 것임을 | ||
//타입스크립트에 알려줌 | ||
} | ||
} | ||
return null; //일치하는 키가 없는 경우 null을 반환 | ||
return null; | ||
} |