import React, { useState } from "react"
function Hooks(props) {
if (!props.isExist) {
const [state, setState] = useState(); // Error!
}
const [state2, setState2] = useState(); // Error!
}
// react가 여러 훅들을 구분할 수 있는 유일한 정보는 훅이 사용된 순서 뿐이기 때문.
function Parent() {
const [color, setColor] = useState('red');
return (
<div>
<h1>Parent Component</h1>
<Child titleColor={color} changeColor={() => setColor('blue')} />
</div>
);
function Child(props) {
return (
<div>
<h1 style={{color : props.titleColor}}>Child Component</h1>
<button onClick={props.changeColor}>Click</button>
</div>
);
}
State 끌어올리기란? 자식 event로 부모 state를 변경하는 것이다.
props의 개념을 이용해 자식에서 일어난 event로 부모의 state 값을 바꿀 수 있다.
자식에게 이벤트 핸들러를 걸고, 이벤트가 발생했을 때 실행할 함수는 부모에서 정의한다. 부모에서 setState가 포함된 함수를 정의하고 자식에게 props로 넘겨준다.
React의 특징 중 하나는 단방향성이다. 부모의 state를 자식에게 넘겨줄 수는 있지만, 자식의 state를 부모에게 전달하기는 어렵다.
형제끼리는 직접적으로 데이터를 전달할 수 없다. 따라서 형제를 모두 가지고 있는 부모 컴포넌트에서 state를 관리하고 이를 각각의 형제에게 props로 전달해야 한다.