☀️ 기상시간 - 8:00
🌕 마감시간 - 24:00
❌ 주말부터 시간을 너무 허투루 보냈다,,, 어제는 몸이 너무 안좋아서 거의 아무것도 못했고,,,, 그래서 그나마(?) 오늘은 집중해서 열심히 공부했다.
오늘에서야 3차로 수정해서 제출했던 Button Component에 대한 리뷰를 받았다.
React Component 가이드라인
1. 무슨 기능을 하는 컴포넌트를 만들지 선정한다.
2. 기능에 대해서 정의한다.
3. 스타일링 관련 정의한다.
4. 2,3 에 대한 리스트가 정리가 되면 props와 state의 리스트를 정리한다.
5. 1, 4를 참고하여 component에 대한 코딩을 시작한다.
사실 지금까지 내가 만드는 component가 어떤 기능을 해야 하는지 생각해보지를 않았었다. 그저 어떤 스타일로 만들지 고민을 했는데, 오늘 리뷰를 듣고 내가 어떤 코드를 작성할 때, 물론 스타일도 중요하겠지만 기능에 대한걸 더 고민해야 겠다는 생각이 들었다.
네이버를 예로, 로그인을 할 때 사용자가 입력한 아이디와 비밀번호를 버튼을 누름으로서 서버에 제출한 후 데이터를 확인 후 페이지 이동이 일어나는데, 그 보이지 않는 기능을 구현해 내야 한다는 말을 듣고 많이 찔렸다(?) 다음 컴포넌트부터는 기능에 대한 고민을 많이 해야할 것 같다.
<Button>
컴포넌트를 받아서 사용할 경우, 내가 입력한 <Button>
은 실제로 button의 역할을 하는게 아니라 자식 컴포넌트에서 받아서 쓰는 컴포넌트라는걸 깨달았다. 그래서 오늘 만들려던 checkbox도 문제가 있던거였다..<Button>
컴포넌트로 <>안에 넣어주는 것들은 다 props로, props정의에 다 입력해주어야 한다는 것. disabled
도 넣어주어야 작동이 된다는 것을 알았다ㅜㅜdefaultProps
로 기본값을 설정해줄 수 있다. 하지만 함수형에서는 따로 설정하는 것이 필요 없이 props를 정의해 준 부분에 값을 넣어줄 경우, 그 props가 사용되지 않은 부분엔 그 값이 적용되는, js문법을 사용하면 된다고 배웠다. 다른 방법으로는 props={props}
부분에 조건연산자를 사용해서도 가능.default
값을 설정하기 위해 전체적인 스타일 코드를 수정해야 할 것 같다. 기본 색, 기본형태를 default
로 설정해야지.disabled
도 넣어서 작동되는지 테스트 해봐야 한다.
1. 작업할 파일 만들어서 연결하기.
: Route폴더에서 CheckBoxBoard에 연결하는 것 부터, sidebar와 components폴더에 파일들 연결하는 것 까지 구석구석 찾아보면서 페이지에 로드될 수 있도록 환경을 만들었다. 내가 만든 틀이 아니라서 모든 연결고리를 찾아서 연결하는게 처음엔 조금 어려웠지만, moon을 도와줄 때 보니 이제 이해가 되는 것 같다 ㅎㅎ
2. <input type="checkbox" />
으로 CheckBox 생성하기
: 버튼보다 쉬울줄 알고 '너무 쉬운거 하나..'라는 걱정을 했지만 전혀 쓸모없는 걱정이었다. 저렇게 만드는데 하루종일이 걸렸다.. 작동원리를 몰랐으니 리서치하는 시간이 많이걸리지ㅠㅠ
type='checkbox'
이었는데 왜그리도 자꾸만 text로 적용이 되는지.. type='checkbox'
이라고 입력했던 부분은 html의 <input>
태그가 아니라 컴포넌트였기에 props로 인식을 했던 것이었다.type='checkbox'
를 입력해주니 제대로 적용이 되었다 😭 attrs
를 사용하는 방법이 있었다.attrs
를 사용하여 styled element 에 custom attributes 를 적용할 수 있다.const Container = styled.input.attrs({type:'checkbox'})
index.js:1452 Warning: Failed prop type: You provided a checked prop to a form field without an onChange handler. This will render a read-only field. If the field should be mutable use defaultChecked. Otherwise, set either onChange or readOnly.
<input type='checkbox'>
를 쓸 때 onClick 핸들러를 제공하고 checked 값을 설정하는 식으로 코딩하면 이런 에러 메시지가 발생한다.
<<<해결방법>>>
1. onClick 핸들러를 없애고 onChange 핸들러를 사용한다.
2. onClick 핸들러를 그대로 두고 싶으면 readonly 키워드를 붙이거나 checked 속성 대신 defaultChecked를 사용한다.
체크박스 , 라디오 그룹 버튼을 만들 때는 name 속성에 같은 값을 입력 한다.
PNG 와 SVG 의 가장 큰 차이점은 이미지를 구성하는 방식이다.
PNG 는 화소(pixel) 단위로 구성되는 형태로써, 비트맵 방식이라고 불린다.
SVG 는 수학을 기반으로 하는 점, 직선, 곡선과 같은 형태로 구성하는 방식이다.
png
svg