주로 React에서 발생하며, 입력 요소의 값이 처음에 정의되지 않았다가 나중에 정의된 경우에 발생합니다. 이는 컴포넌트의 상태 관리에 관련된 잠재적인 문제를 나타내기 위한 것입니다.
React에서는 일반적으로 "제어 컴포넌트" 및 "비제어 컴포넌트"라는 두 가지 유형의 입력 요소를 다룹니다.
value
프로퍼티를 사용하고 onChange
이벤트 핸들러를 통해 상태를 업데이트해야 합니다.const [inputValue, setInputValue] = useState('');
const handleChange = (event) => {
setInputValue(event.target.value);
};
return (
<input type="text" value={inputValue} onChange={handleChange} />
);
value
프로퍼티를 설정하지 않으며, refs나 DOM 메서드를 통해 입력 값을 얻을 수 있습니다.const inputRef = useRef();
const handleClick = () => {
const value = inputRef.current.value;
console.log(value);
};
return (
<div>
<input type="text" ref={inputRef} />
<button onClick={handleClick}>입력 값 얻기</button>
</div>
);
언급한 경고를 해결하려면, 입력 값 처리의 일관성을 보장해야 합니다. 컴포넌트의 수명 주기 동안 입력이 제어되는지 또는 비제어 상태인지를 결정하고, 컴포넌트 코드에서 필요한 조정을 수행하세요.
입력 값이 처음에 정의되지 않았다가 나중에 정의되는 코드인 경우, 상태를 기본값으로 초기화하여 **undefined
**에서 **defined
**로의 전환을 방지할 수 있습니다. 또는 컴포넌트의 논리에 맞게 입력을 처음부터 제어된 상태로 설정할 수 있습니다.