react
A component is changing an uncontrolled input to be controlled. warnning 해결 방법
박주니
2023. 2. 13. 17:29
728x90
반응형
해결 방법
const [adminInfo, setAdminInfo] = useState("");
useEffect(() => {
setAdminInfo(
{name: "user"}
)
}, [])
<input
defaultValue={adminInfo.name || ""}
/>
React default value를 사용하는 이유는 다음과 같습니다.
- 기본값 설정: 만약, 사용자가 입력하지 않았을 경우, 특정 기본값을 표시하기 위해서입니다.
- 초기 폼 상태 설정: 폼을 처음 렌더링할 때, 특정 초기 값을 가지도록 설정하기 위해서입니다.
- 초기 데이터 상태 설정: API를 통해 받은 데이터를 표시할 때, 그 데이터를 기반으로 폼의 초기 상태를 설정하기 위해서입니다.
- 기존 데이터 로딩: 기존에 저장된 데이터를 불러와 폼에 표시할 때, 그 데이터를 기반으로 폼의 초기 상태를 설정하기 위해서입니다.
이와 같은 이유로, React default value는 폼의 초기 상태를 설정하는데 매우 유용한 기능입니다.
다른 방식으로 적용하는 방법 (추천하지는 않음)
useEffect(() => {
document.getElementById("title").value = "hi"
}, [])
<input
id = "title"
/>
추천하지 않은 이유) react를 사용할 때에는 최대한 useState를 활용하는 것이 최적화하는 방식입니다. 순수 자바스크립트로 코드를 구현하다보면 react를 제대로 활용한다고 볼 수 없기 때문에 참고만 해주시면 감사하겠습니다.