목표
- 훅(Hook)에 대해 알아보기
Hook은 React 버전 16.8부터 React 요소로 새로 추가되었습니다. Hook을 이용하여 기존 Class 바탕의 코드를 작성할 필요 없이 상태 값과 여러 React의 기능을 사용할 수 있습니다.
Hook은 우리가 5년간 React로 컴포넌트를 작성하고 유지하는 동안 부딪혔던 수 많은 문제들을 해결했습니다. React를 배우는 중이든, 매일 사용하든, 심지어 비슷한 컴포넌트 모델과 함께 다른 라이브러리를 선호하든지 간에, 사용자는 이러한 문제를 인식해 왔을 것 입니다.
결국 훅(Hook)은 클래스의 단점을 보완하면서 라이프사이클 등과 관련된 함수를 재사용 가능하도록 해준다.
class Example extends React.Component {
constructor(props) {
super(props);
this.state = {
count: 0
};
}
render() {
return (
<div>
<p>You clicked {this.state.count} times</p>
<button onClick={() => this.setState({ count: this.state.count + 1 })}>
Click me
</button>
</div>
);
}
}
this.state.count
를 사용해서 변경해야 했다.import React, { useState } from 'react';
function Example() {
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
useState
라는 훅을 리액트에서 가져오는 것을 의미한다.const [count, setCount] = useState(0);
const countStateVariable = useState(0); // 두 개의 아이템이 있는 쌍을 반환
const count = fruitStateVariable[0]; // 첫 번째 아이템
const setCount = fruitStateVariable[1]; // 두 번째 아이템
const [count, setCount] = useState(0);
const [count, setCount] = useState(() => {
return window.localStorage.getItem("count");
});
<p>Your visit is {this.state.count} times.</p>
<p>Your visit is {count} times.</p>
count
를 직접 사용해 값을 가져온다.<button onClick={() => this.setState({count: this.state.count + 1})}>
클릭
</button>
<button onClick={() => setCount(count + 1)}>
클릭
</button>
setCount
와 count 변수를 가지고 있기에 this를 호출하지 않아도 된다.