Props
Props ?
컴포넌트
의 속성
(property)을 의미한다.
외부
로부터 전달받은 값 & 부모 컴포넌트
(상위 컴포넌트)로부터 전달
받은 값
- 컴포넌트가 최초
렌더링
될 때 화면에 출력하고자 하는 데이터를 담은 초깃값
- 객체 형태 (어떤 타입의 값도 넣어 전달할수 있도록)
- class 문법, 함수 문법으로 만들 수 있다.
읽기 전용
(read-only)으로 함부로 변경 ❌
JSX 속성 및 값을 할당하는 방법
<Child attribute={value} />
전달방법 1
function Parent() {
return (
<div className="parent">
<h1>I'm the parent</h1>
<Child text={"I'm the eldest child"}/>
</div>
);
};
function Child(props) {
return (
<div className="child">
<p>{props.text}</p>
</div>
);
};
전달방법 2
function Parent() {
return (
<div className="parent">
<h1>I'm the parent</h1>
<Child>I'm the eldest child</Child>
</div>
);
};
function Child(props) {
return (
<div className="child">
<p>{props.children}</p>
</div>
);
};
State
State ?
- 컴포넌트 내부에서 변할 수 있는 값 (
check box
, toggle switch
, couter
등..)
사용법
useState
import { useState } from "react";
useState
를 호출한다 === "stats"라는 변수를 선언한다
function CheckboxExample() {
const [isChecked, setIsChecked] = useState(false);
}
function CheckboxExample() {
const stateHookArray = useState(false);
const isChecked = stateHookArray[0];
const setIsChecked = stateHookArray[1];
}
- 상위의 예시에 있는
state
변수에 저장된 값을 사용하려면, 엘리먼트 안에 직접 불러서 쓰며,
isChecked가 boolean 값을 가지기 떄문에 삼항연산자를 사용한다.
<span>{isChecked ? "Checked!!" : "Unchecked"}</span>
state 갱신
- state 변수를 갱신할 수 있는 함수를 호출한다.
function CheckboxExample() {
const [isChecked, setIsChecked] = useState(false);
const handleChecked = (event) => {
setIsChecked(event.target.checked);
};
return (
<div className="App">
<input type="checkbox" checked={isChecked} onChange={handleChecked} />
<span>{isChecked ? "Checked!!" : "Unchecked"}</span>
</div>
);
}
지켜야 할 내용
- React state는 상태 변경 함수 호출로 변경해야 한다.
- 강제로 변경을 시도 ❌
- 상태 변경 함수 사용은 React와 개발자의 약속
- 강제로 변경을 시도하면, 리렌더링이 되지 않는다거나, state가 제대로 변경되지 않는다.
예시 : state.push(1);
, state[1] = 2;
, state = 'wrong state';