본문 바로가기
JavaScript/React

[ReactJS_Complete] Controlled Component, Uncontrolled Component

by HJ0216 2023. 5. 29.

이 글은 [[한글자막] React 완벽 가이드 with Redux, Next.js, TypeScript]를 수강하며 정리한 글입니다.

 

 

⚛️ 기본 환경: IDE: VS code, Language: React

 

 

1. Controlled Component

: 사용자의 입력을 기반으로 state를 관리하고 변경

<select>는 selected값에 따라 value가 확정 = Controlled Component

+ Single Source of Truth, 신뢰 가능한 단일 출처

: 하나의 상태는 한 곳에서만 존재

: state value가 변경 → state값이 쓰인 곳도 항상 최신값으로 유지됨

: Single Source of Truth가 이뤄지는 component가 제어 컴포넌트

❌ 불필요한 Rerendering or API 호출이 발생할 수 있음

⭕ 대안: Throttling(마지막으로 함수가 호출되면 일정시간이 지나기 전에는 다시 동일한 함수가 호출되지 않는 것)

             : Debouncing(연이어 함수가 호출되면 가장 마지막 ( 또는 맨 처음 ) 함수만 호출되는 것)

 

2. Uncontrolled Component

: React에서 값을 보장하지 않는 방식으로 태그가 자체적으로 상태를 갖는 경우를 의미

: 대표적으로 input 태그는 값 입력 시, 입력 폼 내부 상태로 관리됨

: Uncontrolled Component는 값이 실시간으로 동기화되지 않으며 Click event 발생 등 사용자가 트리거할 때, Rerendering을 하여 값을 동기화시킴

 

 

 

참고 자료

 

[React] 제어 컴포넌트 VS 비제어 컴포넌트

[제어 컴포넌트와 비제어 컴포넌트란?] 어렵게 말하자면, React에 의해서 값이 제어되는 컴포넌트를 제어 컴포넌트, React에 의해서 값이 제어되지 않는 컴포넌트를 비제어 컴포넌트라고 합니다.

itprogramming119.tistory.com

 

Controlled and uncontrolled form inputs in React don't have to be complicated - Gosha Spark

There are many articles saying you should use setState, and the docs claim refs are bad. So contradictory. How are you supposed to make forms?

goshacmd.com

 

[React] 제어 컴포넌트 vs 비제어 컴포넌트

앞서 useState와 useRef에 대해서 정리를 했었다. [React] useRef 그리고 useState 일반적으로 우리가 상태값을 관리할 때는 useState를 사용한다. 거기에서 state 값이 변경되면 리렌더링이 발생하면서 화면이

bum-developer.tistory.com

 

제어 컴포넌트와 비제어 컴포넌트

제작중인 앱에서 사용할 컬러 팔레트 패키지를 살펴보던 중, 의아한 점이 하나 생겼습니다. Controlled 컴포넌트에서 selectedColor 라는 변수를 갖는 것만 제외하면 둘은 거의 동일해 보이는데, 왜 Cont

merrily-code.tistory.com

 

React: 제어 컴포넌트와 비제어 컴포넌트의 차이점

👀 제어 컴포넌트와 비제어 컴포넌트의 차이점, 활용 방법에 대해 알아봅시다

velog.io

 

 

[ReactJS_Complete] React.useRef()

이 글은 [[한글자막] React 완벽 가이드 with Redux, Next.js, TypeScript]를 수강하며 정리한 글입니다. ⚛️ 기본 환경: IDE: VS code, Language: React React.useRef() : .current프로퍼티에 변경 가능한 값을 담고 있는

hj0216.tistory.com