728x90
300x250
SMALL
베제어 컴포넌트(Uncontrolled Component)는 HTML 폼 요소 자체를 리액트의 관리 없이 사용하는 방식을 의미한다. 이것은 HTML폼 요소의 기본 동작을 그대로 사용하는 방식이다. 따라서 HTML폼을 그대로 사용하지만, 리액트 상태 관리와는 분리된 방식으로 동작한다.
필요할 때 ref를 사용하여 값에 접근한다.
특징
- DOM을 직접 참조 : 입력 값을 상태로 관리하지 않고, DOM에서 ref를 통해 값에 접근한다.
- HTML기본 동작 유지 : 폼 데이터는 사용자가 입력한 값으로 DOM에 저장되며, 리액트는 이를 제어하지 않는다.
- 간단한 구현 : 입력 데이터가 리액트 상태와 동기화되지 않기 때문에 코드가 간단해질 수 있다.
- 유효성 검사 등 동적 처리에 제약 : 입력 데이터에 기반한 동적 처리를 하려면 DOM값을 수동으로 가져와야 하므로 번거로울 수 있다.
비제어 컴포넌트의 예제
1. 텍스트 입력
import React, { useRef } from "react";
function UncontrolledComponent() {
const inputRef = useRef(); // DOM 참조를 위한 ref 생성
const handleSubmit = (e) => {
e.preventDefault(); // 폼 제출 기본 동작 방지
alert(`입력된 값: ${inputRef.current.value}`); // DOM에서 값 가져오기
};
return (
<form onSubmit={handleSubmit}>
<label>
이름:
<input type="text" ref={inputRef} /> {/* 상태 관리 없이 ref로 직접 접근 */}
</label>
<button type="submit">제출</button>
</form>
);
}
export default UncontrolledComponent;
2. 파일 업로드
function FileUploadExample() {
const fileInputRef = useRef();
const handleSubmit = (e) => {
e.preventDefault();
alert(`선택된 파일: ${fileInputRef.current.files[0].name}`);
};
return (
<form onSubmit={handleSubmit}>
<label>
파일 선택:
<input type="file" ref={fileInputRef} />
</label>
<button type="submit">업로드</button>
</form>
);
}
파일 입력의 값은 일반적으로 ref를 통해 접근한다. 리액트의 상태로 관리하지 않느 것이 더 효율적이다.
728x90
반응형
LIST
'Front-end > React' 카테고리의 다른 글
Props Drilling 문제란? (0) | 2025.02.04 |
---|---|
React에서 useState를 활용한 간단한 회원가입 폼 만들기 (0) | 2025.02.03 |
제어 컴포넌트 vs 비제어 컴포넌트 (0) | 2025.02.01 |
React의 제어 컴포넌트란? (0) | 2025.01.31 |
React에서 value 설정하고도 입력이 가능하게 만드는 방법 (0) | 2025.01.30 |
댓글