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를 따로 파라미터로 받아서 사용하시는 이유가 있을까요?
Answer 2
1
AI 인턴의 답변이 너무 훌륭해서 제가 뭐 덧붙일 말이 없네요 😅
저는 AI 인턴만큼 깊게 고려한 것은 아니고, 그저 습관적으로 만들었을 뿐이에요.
실무에서 구현할 내용이 많지 않은 상황에서는 말씀하신 방식으로도 충분히 괜찮다고 생각합니다.
다만 키보드 버튼별 분기가 많다거나 추가요청사항이 있을 것으로 예상되는 상황 등에서
두루두루 유연하게 대응하기에는 제 방식이 더 편리할 것 같고요 😀
0
안녕하세요, 인프런 AI 인턴입니다.
leejha님, 질문해주셔서 감사합니다.
keyEventMap을 전역에 구현하고, focusIndex와 selectIndex를 파라미터로 받아 사용하는 방식은 여러 이점을 가지고 있습니다. 주된 이유는 재사용성과 결합도의 감소입니다. 이 방식을 통해 해당 함수들이 다른 컨텍스트 또는 컴포넌트에서도 유연하게 사용될 수 있게 합니다. 컴포넌트 내부에서 직접 사용하는 대신 이렇게 구현함으로써, 코드의 모듈성과 유지보수성을 향상시킬 수 있습니다. 또한, 테스트 용이성 측면에서도 별도의 파라미터를 통해 독립적인 함수로 관리되기 때문에 더 효율적으로 테스트 코드를 작성할 수 있습니다.
각각의 함수들이 context에 직접 종속되지 않고, 필요한 파라미터를 명시적으로 전달받음으로써, 함수의 예측 가능성과 재사용성이 증가하는 장점이 있습니다. 이는 큰 프로젝트 또는 다양한 상황에서 같은 기능이 필요할 때, 코드의 재사용을 용이하게 하며, 따라서 전체적인 프로젝트의 구조를 더 견고하게 만들어줍니다.
즉, 전역에 구현하고 파라미터를 받아 사용하는 것은 장기적으로 볼 때, 프로젝트의 확장성과 유지 보수성을 위한 결정적인 접근 방식일 수 있습니다.
6장 ORM 에 관하여 질문
0
1
0
안녕하세요 한번 더 문의드립니다.
0
8
0
git 초기설정하고 Next Js 설치하는게 너무 어렵습니다.
0
7
1
커서 색상 및 클로드코드 프롬프트 입력칸 설정 문의
0
9
1
81강 실습 자료 없음
0
8
1
클로드 질문에서 줄 바꿈
0
12
1
2강 퀴즈를 푸려는데 자꾸 수강하지 않은 수업이있는데.. 다들었습니다 ㅜ
0
15
1
서브에이전트 실행중에도 대기해야 할까요?
0
11
1
소스코드 제공여부
0
22
2
궁금했던 질문입니다. 바로 콤마위치 입니다.
0
15
1
선생님 공유해주신 핸드북에 링크가 몇개 잘못되었어요
0
19
2
62강 실습자료가 잘못되었습니다.
0
17
1
제네릭을 사용하실 때 콤마
0
180
2
popover createPortal 방식에서
0
167
2
스낵바를 만들 때 snackBarContext와 snackBarSetContext
0
166
2
snackbar를 createportal를 썻을 때 갯수 조절이 가능한가요?
0
204
1
useCallback, useMemo의 차이에 대해서 궁금합니다.
0
382
1
createPortal 활용해서 modal 만들 때 활용한 MutationObserver 코드 관련 질문
0
370
3
강의자료 (보일러플레이트) 다운로드 관련 질문
0
269
1
모달만드는 방식 질문
0
257
1
캐러셀 동작원리
0
323
2
dropdown 내부에서 data의 타입을 알아야 할까요?
0
216
1
Provider를 외부에 노출하는 것보다 내부 로직으로 숨기는 것은 어떤가요?
0
300
2
테일윈드로 포탈로 모달작성시 뒤에 클릭이 안됩니다
1
325
2

