아닙니다. React에서는 입력값을 받는 방식이 여러 가지가 있으며, 꼭 value와 onChange를 설정해야 하는 것은 아닙니다.
React에서 <input>을 사용할 때는 제어 컴포넌트(Controlled Component) 와 비제어 컴포넌트(Uncontrolled Component) 두 가지 방식이 있습니다.
현재 사용하신 방식으로, React 상태(state)에 값을 저장하고 관리하는 방식입니다.
import { useState } from "react"
function App() {
const [formData, setFormData] = useState({ pwd: "" })
const formDataChange = (e) => {
setFormData({ ...formData, [e.target.name]: e.target.value })
}
return (
<div>
비밀번호: <input type="text" value={formData.pwd} name="pwd" onChange={formDataChange} /> <br />
</div>
)
}
export default App
📌 장점:
📌 단점:
React의 상태가 아니라, DOM 자체에서 값을 직접 관리하는 방식입니다.
import { useRef } from "react"
function App() {
const pwdRef = useRef(null)
const handleSubmit = () => {
alert(`비밀번호: ${pwdRef.current.value}`)
}
return (
<div>
비밀번호: <input type="text" ref={pwdRef} /> <br />
<button onClick={handleSubmit}>확인</button>
</div>
)
}
export default App
📌 장점:
📌 단점:
제어 컴포넌트(Controlled Component) 비제어 컴포넌트(Uncontrolled Component) 제어 컴포넌트가 일반적으로 많이 사용되지만, 성능 최적화가 필요하거나 간단한 입력 필드라면 비제어 컴포넌트도 고려할 수 있습니다. 🚀