Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- vuex map
- 쌓임맥락
- postcss
- Vue
- vue mixin
- vue 지역 컴포넌트
- KDT 프로그래머스
- SCSS forward
- flex
- intersection opserver
- 프로그래머스 K_Digital Training
- nextjs사용법
- 고양이 사진 검색기
- KDT 프로그래머스 데브코스 프론트엔드
- 프로그래머스 데브코스 프론트엔드
- 리액트
- SCSS extend
- SCSS use
- SCSS import
- git 같은계정 다른 컴퓨터
- 프로그래머스 데브코스
- react next
- 다른컴퓨터에서 git사용
- 리스트 렌더링
- 프로그래머스 프론트엔드 데브코스
- Spacer
- vue 이벤트 수신
- 폼 입력 바인딩
- netlify redirect
- 이벤트 수식어
Archives
- Today
- Total
혼자 적어보는 노트
[React] input type="file" 커스터마이징 하기 본문
이미지 업로드 버튼을 만드려면 input 태그에 type="file"을 주어야하는데
type file의 경우 브라우저에서 지정한 UI로만 사용이 가능해서 CSS수정이 불가능하다.
css를 변경할 수 없으니 다른 방법으로 input태그를 숨겨놓고
커스터마이징 할 버튼을 추가하여 css를 수정하는 방식으로 해결을 할 수 있다.
import React, { useRef } from "react";
const imageRef = useRef();
const onImageUploadClick = () => {
imageRef.current.click();
}
// .. 생략
// 버튼영역
<input type="file" multiple hidden ref={imageRef} /> // 실제 이미지 버튼
<button onClick={onImageUploadClick}>이미지 업로드</button> // 커스터마이징 버튼
file input을 hidden으로 숨기고 useRef를 사용하여
버튼 클릭 시 file input에 클릭이벤트를 넣어서 마치 input을 클릭한 것 처럼 구현이 가능하다.
좀 더 간단하게 labal 태그로도 가능하다.
<input id="input-file" type="file" multiple hidden /> // 실제 이미지 버튼
<label for="input-file">이미지 업로드</label>
label의 for 속성을 이용해서 input과 연결해 주고
input을 숨기고 label에 CSS를 추가하여 디자인해준다.
'React' 카테고리의 다른 글
[React] 정규표현식을 이용하여 텍스트 안에서 해시태그 분리하기 (0) | 2022.03.06 |
---|---|
[React] styled-component (0) | 2022.03.06 |
[React] 영역 밖 클릭시 이벤트 / 모달 닫기 (0) | 2022.02.24 |
[React] 활성화된 input focus 해제 / blur() (0) | 2022.01.17 |
[React] useCallback에 대한 이해 / 함수 재사용 (0) | 2022.01.17 |
Comments