const UserLabel = styled.label`` <ModalHead> <UserLabel htmlFor="UserImg"> <UserIcon src={ImageFile} /> </UserLabel> <input type="file" accept="image/*" id="UserImg" style={{ display: "none", }} />
<input type="file">
를 이용해 파일 업로드 버튼을 만들어준다.accept='image/*'
속성을 넣어서image
확장자만 선택적으로 업로드하도록 해준다.input
을 숨겨버리기 위해display: none;
속성을 준다.<UserLabel />
컴포넌트를 label 컴포넌트로 만들어 준다.UserLabel
컴포넌트의htmlFor
속성의 값과input
태그의id
속성 값을 서로 일치시킨다.
labelFor
html
에서는label
과input
을 연결할 때label
에는for
속성,input
에는id
속성을 통해 둘이 같다는 의미를 표시한다.- 하지만
React
에서는for
속성을for
문으로 의미하기 때문에htmlFor
이라는 속성을 사용해야 한다.<!--HTML--> <label for="forName"></label> <input id="forNmae" /> <!--JS 내 HTML--> <label htmlFor="forName"></label> <input id="forName />