본문 바로가기

React17

[Trouble Shootings #7] React - input의 여러 state 처리 리액트에서 form을 만들 때 useState를 여러 개 만들어서 처리하는 경우가 있습니다. 하지만 그러면 너무 불필요한 반복되는 코드가 많아져서 inputs 라는 object를 useState의 초기값으로 만들고, 각각 input 태그에는 name 속성을 지정하여 이후 event handler로 [name]: value 값으로 지정시키면 훨씬 간단하게 구현할 수 있습니다. 추가적으로 타입스크립트를 이용한다면 input 뿐만 아니라 textarea 까지 고려해서 타입을 지정하시면 됩니다. 2022. 9. 23.
[Trouble Shootings #4] React - label과 input 연동 HTML 에서 label - input 연동을 위해서는 2가지 방법이 있습니다. 형태로 표현하는 방식과 이와 같은 방식이 있습니다. 개인적으로는 label 태그 안에 input 태그를 넣어서 감싸는 것을 좋아합니다. 불필요하게 id 값이 과다하게 늘어나면 유지보수하기 힘들어진다고 생각합니다. React 에서는 중복되는 속성을 피하기 위해 label 태그에 htmlFor 속성과 input 태그의 id 속성을 이용해 연동을 시킵니다. 하지만 저는 의문점이 생겼습니다. React가 탄생하게 된 배경 자체가 직접 DOM을 핸들링 하는 것은 꽤 무겁기 때문에 가상 DOM 이라는 Map (자료구조) 객체를 두고 이전 상태와 비교하여 갱신하는 형태인데 id 값을 직접 조작하면 DOM을 핸들링하는 것이기 때문입니다. .. 2022. 9. 22.
[Trouble Shootings #3] React - module scss 이용 시 component prop으로 custom className을 넘겼을 때의 처리 회사에서 업무를 하다가 module scss 관련 트러블 이슈가 발생하였습니다. 자주 사용되는 재사용 가능한 컴포넌트를 하나 만들고 사용하고 있었는데 디자인 커스터 마이징이 필요하였습니다. 그래서 재사용 컴포넌트(자식 컴포넌트)를 사용하는 상위 컴포넌트에서 module scss를 import 한 styles를 이용하여 styles['module scss class 명'] 형태로 props을 넘겨서 하위 컴포넌트에서 styles[className(변수)] 형태로 처리하니 undefined로 class 명이 나오게 됩니다. 처음에는 module scss여서 해당 파일에만 scoped 되어 못 넘기는 건가 아니면 어디선가 중복되서 꼬인건가 고민이었습니다. 하지만 생각해보니 상위 컴포넌트에서 styles로 감싸.. 2022. 9. 21.
[Trouble Shootings #2] React - 여러 이벤트 간의 관계 (feat. stopPropagation) 오늘 회사에서 작업을 하다가 구글링을 통해 잊어버렸던 JS 개념을 활용해 해결하였습니다. 사전에 퍼블리싱한 버튼이 있었는데 outer container에 button 클릭 이벤트 핸들러가 있고 그리고 position: absolute; 로 설정한 -, + 버튼이 각각 왼쪽과 오른쪽 끝에 붙어 있었습니다. 한 곳에 총 3개의 버튼이 있고 각각 3개의 이벤트 핸들러가 걸려 있어서 이벤트 버블링이 일어나면서 중복 발생하기도 하였습니다. 순서가 꼬이는 경우도 가끔 발생하여 이런 이슈를 어떻게 해결할지 구글링을 하였습니다. 사전에 이와 같은 방식으로 html, css 퍼블리싱을 하지 않았더라면 좀 더 나았을 것 같기도 한데 우선 해결이 필요합니다. 끝내 찾은건 event.currentTarget.stopPropa.. 2022. 9. 20.
반응형