State & Props
Props, State 란?
- 데이터를 다룰 때 사용되는 개념

State 란?
- 컴포넌트의 상태를 나타냄
- 가변 데이터 (컴포넌트의 내부에서 선언되기 때문)
- 직접 변경 가능
- 만약 state가 변경되면 컴포넌트를 다시 렌더링 해야함
- 외부에 공개하지 않고, 컴포넌트가 스스로 관리함
- state로 사용하는 것은 컴포넌트의 상태값을 나타내기 위한 것들(리스트에서 선택된 값, 체크박스에서 체크된 값 등)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { useState } from 'react'; | |
const Counter = ({counter}) => { | |
return <div>{counter}</div> | |
} | |
const StateExample = () => { | |
const [count, setCount] = useState(0); | |
return ( | |
<div> | |
<Text counter={count} /> | |
<div onClick={() => setCount(count + 1)}>+</div> | |
</div> | |
); | |
}; | |
export default StateExample; |
└ 위의 예시는 + 버튼을 누르면, 화면에 표시된 값을 1 증가 시키는 코드
┌ State를 사용하기 위해 useState라는 Hook을 사용해야 함
├ useState는 State 변수의 초기값을 매개변수로 전달하여 호출하고, 결과값으로는 배열을 반환함
├ 반환된 배열에서는 useState 함수를 호출할 때 설정한 초기값이 할당된 변수와
해당 변수를 수정하기 위한 Set 함수가 포함되어 있음
├ useState를 사용하여 할당받은 변수는 불변값임
└ 따라서, 해당 값은 직접 수정이 불가능하며 해당 값을 변경하기 위해서는 반드시 Set 함수를 사용해야 함
Props 란?
- Properties의 줄임말
- 불변 데이터
- 부모 컴포넌트가 자식 컴포넌트한테 전달하는 데이터, 읽기 전용 데이터
- 컴포넌트는 상속하는 부모 컴포넌트로부터 props를 받고 이 props는 상속받은 컴포넌트 내에서 수정이 불가능
└ 리액트에서 부모 → 자식의 일방향성 상속이라는 특징 때문 - 초기 마운트 속도가 빠름
- 불필요한 기능이 없음
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<div id="name" class="label" onclick="alert('Hello!');"> | |
Hello! | |
</div> |
└ 위의 예시는 HTML의 div 태그에 id와 class 속성을 설정하고
onclick 속성에 직접 자바스크립트의 alert 코드를 사용한 코드.
이처럼 이미 HTML의 속성이라는 개념을 사용해 왔고,
React에서는 이 속성 개념에 데이터를 전달한다는 개념을 추가 확장한 것임
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const Hi = ({hi}) => { | |
return <div>{hi}</div> | |
} | |
const Props = () => { | |
return <Hi hi='Hello!'/> | |
} |
└ 위와 같이 부모 컴포넌트에서 자식 컴포넌트에 속성을 이용하여 Hello!라는 문자열 데이터를 전달함
'React > 2022-上' 카테고리의 다른 글
State Lifecycle (0) | 2022.03.31 |
---|---|
Class / Functional Component (클래스형 컴포넌트, 함수형 컴포넌트) (0) | 2022.03.28 |
JavaScript와 TypeScript (0) | 2022.03.27 |
filter, map, every (0) | 2022.03.27 |
container-presentation (0) | 2022.03.27 |