일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 드림코딩
- vscode
- useCallback
- useEffect
- js
- useContext
- mysql
- reactPortals
- 제어컴포넌트
- BIND
- useReducer
- useImperativeHandle
- 리액트작동원리
- virtualDOM
- realDOM
- React
- MariaDB
- useState
- 변수타입
- eventloop
- ConnectBy
- reactDOM
- CSS
- 비제어컴포넌트
- hoisting
- ForwardRefs
- 프로그래머스
- flexbox
- SQL
- 재귀함수
Archives
- Today
- Total
SOOM_BLOG [숨숨 블로그]
제어/비제어 컴포넌트 본문
제어 컴포넌트
React에 의해 값이 제어되는 입력 폼 엘리먼트.
(react와 상태가 연결되어 있는지 확인!)
const ControlComponent = (props) => {
const [enteredUserNm, setEnteredUserNm] = useState("");
const [enteredUserAge, setEnteredUserAge] = useState("");
....
const onChngNameHandler = (e) => {
setEnteredUserNm(e.target.value);
};
const onChngAgeHandler = (e) => {
setEnteredUserAge(e.target.value);
};
return (
<React.Fragment>
<input
type="text"
id="username"
onChange={onChngNameHandler}
value={enteredUserNm}
/>
<input
type="number"
id="age"
onChange={onChngAgeHandler}
value={enteredUserAge}
/>
</React.Fragment>
)
}
비제어 컴포넌트
ref를 사용하여 DOM에서 폼 값을 가져와 DOM 자체에서 폼 데이터가 다루어지는 경우.
(react를 통해서 요소의 상태를 제어하지 않음)
const RefPractice = (props) => {
const nameInputRef = useRef();
const ageInputRef = useRef();
....
const test = () => {
nameInputRef.current.value = ""
ageInputRef.current.value = ""
}
return (
<React.Fragment>
<input
type="text"
id="username"
value={enteredUserNm}
ref={nameInputRef}
/>
<input
type="number"
id="age"
value={enteredUserAge}
ref={ageInputRef}
/>
</React.Fragment>
)
}
보통은 제어 컴포넌트를 사용하는게 대다수...
'TIL > react' 카테고리의 다른 글
useState() VS useReducer() (0) | 2022.01.26 |
---|---|
useEffect에서 CleanUp 함수 (0) | 2022.01.25 |
effect(=side effect) (0) | 2022.01.25 |
ref (0) | 2022.01.22 |
Return root level (0) | 2022.01.21 |