keyEventMap를 전역에 구현하신 이유가 궁금합니다!
const KeyEventMap: Partial<Record<KeyboardEvent<Element>['key'], KeyEventHandler>> = {
ArrowUp: (e, { size, focusIndex }) => {
e.preventDefault()
focusIndex(prev => (size + prev - 1) % size)
},
ArrowDown: (e, { size, focusIndex }) => {
e.preventDefault()
focusIndex(prev => (size + prev + 1) % size)
},
Enter: (e, { focusedIndex, selectIndex }) => {
e.preventDefault()
selectIndex(focusedIndex)
},
Escape: (e, { toggle }) => {
toggle(false)
},
}
제 짧은 지식으로는 focusIndex, selectIndex를 파라미터로 받는 것보다 context 내부에서 그냥 사용하는 것이 더 간단할 것 같다고 생각했습니다.
keyEventMap을 전역에 구현하여, focusIndex와, selectIndex를 따로 파라미터로 받아서 사용하시는 이유가 있을까요?
回答 2
1
AI 인턴의 답변이 너무 훌륭해서 제가 뭐 덧붙일 말이 없네요 😅
저는 AI 인턴만큼 깊게 고려한 것은 아니고, 그저 습관적으로 만들었을 뿐이에요.
실무에서 구현할 내용이 많지 않은 상황에서는 말씀하신 방식으로도 충분히 괜찮다고 생각합니다.
다만 키보드 버튼별 분기가 많다거나 추가요청사항이 있을 것으로 예상되는 상황 등에서
두루두루 유연하게 대응하기에는 제 방식이 더 편리할 것 같고요 😀
0
안녕하세요, 인프런 AI 인턴입니다.
leejha님, 질문해주셔서 감사합니다.
keyEventMap을 전역에 구현하고, focusIndex와 selectIndex를 파라미터로 받아 사용하는 방식은 여러 이점을 가지고 있습니다. 주된 이유는 재사용성과 결합도의 감소입니다. 이 방식을 통해 해당 함수들이 다른 컨텍스트 또는 컴포넌트에서도 유연하게 사용될 수 있게 합니다. 컴포넌트 내부에서 직접 사용하는 대신 이렇게 구현함으로써, 코드의 모듈성과 유지보수성을 향상시킬 수 있습니다. 또한, 테스트 용이성 측면에서도 별도의 파라미터를 통해 독립적인 함수로 관리되기 때문에 더 효율적으로 테스트 코드를 작성할 수 있습니다.
각각의 함수들이 context에 직접 종속되지 않고, 필요한 파라미터를 명시적으로 전달받음으로써, 함수의 예측 가능성과 재사용성이 증가하는 장점이 있습니다. 이는 큰 프로젝트 또는 다양한 상황에서 같은 기능이 필요할 때, 코드의 재사용을 용이하게 하며, 따라서 전체적인 프로젝트의 구조를 더 견고하게 만들어줍니다.
즉, 전역에 구현하고 파라미터를 받아 사용하는 것은 장기적으로 볼 때, 프로젝트의 확장성과 유지 보수성을 위한 결정적인 접근 방식일 수 있습니다.
클로드코드 유료플랜 할인 방법이 있을까요?
0
16
0
제네릭 클래스 핸드북 페이지가 undefined라고 나옵니다.
0
8
1
API Error : 400 에러의 원인과 해결방법이 궁금합니다!!
0
16
2
퍼미션 권한 설정 문의
0
18
2
Next.js + Tanstack Query BFF 구조 질문
0
12
1
커서에서 shift+enter가 안됩니다.
0
19
2
mcp 설치를 못하겠어요
0
32
2
라이브러리 관련 질문 있습니다!
0
24
2
output-styles은 Claude Code의 공식 기능이 아니라고 하는데 혹시 변경된걸까요?
0
22
2
클로드 변경
0
25
2
/config 에서 output-style 을 변경
0
23
1
한국어 문제
0
25
2
제네릭을 사용하실 때 콤마
0
167
2
popover createPortal 방식에서
0
147
2
스낵바를 만들 때 snackBarContext와 snackBarSetContext
0
146
2
snackbar를 createportal를 썻을 때 갯수 조절이 가능한가요?
0
193
1
useCallback, useMemo의 차이에 대해서 궁금합니다.
0
365
1
createPortal 활용해서 modal 만들 때 활용한 MutationObserver 코드 관련 질문
0
356
3
강의자료 (보일러플레이트) 다운로드 관련 질문
0
256
1
모달만드는 방식 질문
0
243
1
캐러셀 동작원리
0
306
2
dropdown 내부에서 data의 타입을 알아야 할까요?
0
199
1
Provider를 외부에 노출하는 것보다 내부 로직으로 숨기는 것은 어떤가요?
0
288
2
테일윈드로 포탈로 모달작성시 뒤에 클릭이 안됩니다
1
316
2

