728x90
에서 파일 업로드 버튼을 만들었는데 너무 밋밋하고 버튼 이름을 커스텀할 수 없다.
업로드 버튼을 커스텀 하려면 기존의 <input>태그를 숨긴 뒤, 새로만든 버튼에 연결해야 한다.
1. 기존에 만든 <input> 에 ref 추가
<input
className="image_input"
ref = {fileRef}
type='file'
id='image'
accept='image/*'
name='image'
onChange={addImage}
>
</input>
//ref를 사용하기 위해 useRef()라는 Hook함수를 사용한다.
const fileRef= useRef();
*ref 란?
리액트에서 DOM에 이름을 붙이는 것. ref로 지정해둔 fileRef를 통해서 해당 함수를 실행할 수 있다.
2. CSS파일에서 해당 input태그 숨기기
.image_input {
display: none;
}
3. 새로 커스텀 버튼 만들기
<button onClick = {connectUploadButton}>그냥 일단 만들어봐!</button>
4. 버튼에 연결된 함수 만들기
이 함수는 ref로 <input>과 연결되있어서 input태그를 대신 누르게 된다.
const connectUploadButton = (e) => {
e.preventDefault();
fileRef.current.click(); // 버튼을 대신 클릭.
}
728x90
'Front-end > React' 카테고리의 다른 글
React) 라우터 (0) | 2022.01.22 |
---|---|
React) DOM이란? DOM 이해하기! (나름 쉬운 설명) (0) | 2021.12.22 |
React) 이미지/파일 업로드 버튼 (0) | 2021.11.27 |
리액트 설치 방법 - 리눅스 (0) | 2021.11.15 |