💡 hook이란 기존 함수 컴포넌트에선 사용할 수 없었던 state, lifecycle등을 사용할 수 있게 해주는 함수이다.
import React, { useState } from 'react'; ⭐️
const Login = () => {
const [id, setId] = useState('simon');⭐️
return (
<p> hello {id}! </p>
)
};
export default Login;
💡 props는 부모 컴포넌트로부터 전달받은 데이터를 지니고 있는 객체이다.
표현식{}
을 이용해 호출해야 한다.import React from 'react';
import Child from './Child';
const Parent = () => {
const frute = '레몬';
return (
<>
<p>{frute}</p> // 레몬
<Child lemon={frute} apple="사과" />
</>
);
};
export default Parent;
key={value}
형식으로 전달한다.props = {lemon:’레몬', apple:’사과’}
와 같은 식으로 전달 된다.import React from 'react';
const Child = (props) => {
return (
<>
<p>{props.lemon}</p> //레몬
<p>{props.apple}</p> //사과
</>
);
};
export default Child;
import React, {useState} from 'react';
const [state, setState] = useState('hello');
const [id, setId] = useState(['simon','tom']);
//생략
<p>{id[0]}</p> // simon
const frutes = ["레몬", "오렌지", "사과"];
console.log(frutes[1]); // "오렌지"
//구조 분해 할당
const [lemon, orange, apple] = ["레몬", "오렌지", "사과"];
console.log(orange); // "오렌지"
구조 분해 할당을 이용하면 기존 배열 처럼 인덱스에 접근하지 않고 배열 요소에 변수를 선언해서 변수만 호출하면 배열의 요소를 반환할 수 있다.
useState와 event를 이용해서 아래와 같이 버튼 클릭시 글자색과 글자가 바뀌는 기능을 구현할 수 있다.
const [color, setColor] = useState('green')
//생략
<p style={{color:color}}>{color}</p>
<button
onClick={()=>{setColor(color === 'green' ? 'blue' : 'green')
}}>클릭</button>
state와 props를 이용해서 자식 컴포넌트에게 부모 컴포넌트에서 정의한 함수와 변수를 전달할 수도 있다.
끌어올리기를 이용하면 부모로 부터 전달받은 함수로 부모의 state를 변경할 수도 있다.
리액트의 기초인 state와 props를 통해 변수를 자식 컴포넌트에게 전달하고 자식 컴포넌트에서 부모 컴포넌트의 state를 set하여 제어할 수 있다. 자주 쓰이는 개념인 만큼 많은 연습이 필요할거 같다.