2023 08 23
2023-08-23¶
[REACT] A component is changing an uncontrolled input to be controlled¶
참고: https://react.dev/reference/react-dom/components/input#controlling-an-input-with-a-state-variable 참고: https://i-ten.tistory.com/297
- 개요
- 컴포넌트가 uncontrolled input을 controll로 변화시키려 할 수 있다
- 주로 이런 경우는 undefined -> defined value로 변화시킬때 발생한다
- 컴포넌트 생명주기 속에서 controlled로 가져갈지 uncontrolled로 가져갈지 결정해라
-
Input initial value
<input />은 defaultValue를 넘겨줘도 컨트롤되지 않는다- JSX는 오로지 initial value만 특정지음
- 현재 값이 뭐여야 할지는 컨트롤하지 않음
- controlled input을 렌더링하려면
valueprop을 넣어줘야한다- checkboxes 혹은 radio 라면
checked를 넣어줘야 한다
- checkboxes 혹은 radio 라면
- 리액트는 input에 value가 있도록 강제할 것이다.
- 주로 state 변수를 통해서 이를 해결하곤 한다.
- 여기서 컴포넌트에 넘겨주는 value는
undefined혹은null이 되어서는 안된다- empty라면 그냥
''를 넘겨주자
- empty라면 그냥
- Input Radio default
- 포스팅에서는 새로고침을 통해 uid를 가져오는 userData가 비어버릴때 해당 에러가 발생한다고 한다
- 데이터값이 순간적으로 undefined로 떨어지면 원인이 되어버리는 현상
- 따라서 undefined일 때 무슨 처리를 해줄지 뚝딱 알아보자
value = {value || ''}와 같은 식으로 undefined => 빈값으로 넘기거나defaultValue를 줘서 uncontrolled 로 그냥 다뤄버리자