리액트에서 Form 요소의 내부 구성 요소는 Input, Textarea, select 요소 등 어떠한 데이터를 입력하거나 선택하는 요소들로 이뤄진다. 그렇다면 입력하거나 선택된 데이터를 접근하는 방법에는 어떠한 방법들이 있을까?
데이터 입력, 선택 요소들의 값에 접근하는 2가지 방법이 있다.
state, 즉 상태값을 이용해서 해당 요소의 값에 접근하는 방법이다.
import { useState } from "react"
function stateExample () {
const [value, setvalue] = useState("");
return ()
}
export default stateExample
ref, 즉 reference의 약제로 실제 DOM에 접근해서 해당 값을 가져오는 방법이다.
import { useRef } from "react"
function refExample = () => {
const inputRef = useRef("")
return ()
}
그럼 여기서 제어 컴포넌트, 비제어 컴포넌트와 useState, useRef는 어떤 관련이 있는걸까?
제어 컴포넌트, 비제어 컴포넌트는 어떠한 경우에 사용하는게 맞을까?
실시간으로 값이 필요할 때
불필요한 재 랜더링을 줄이고 제출 시에만 값이 필요할 때
비제어 컴포넌트, 제어 컴포넌트의 선택에서 이게 무조건 옳다라는 선택은 없다. 다만 진행하는 프로젝트나 혹은 본인이 추구하는 리액트 앱 구축에 알맞은 선택을 해서 구현하면 된다고 생각한다.