React

Hooks와 Class 컴포넌트, react hook을 쓰는 이유

파카진 2021. 10. 6. 02:25

Class 컴포넌트를 사용해서 state 값을 증가시키려면

class App extends Component {
  state = {
    count: 0,
  };
  // state를 정의해야하고
  modify = (n) => {
    this.setState({
      const: n,
    });
  };
  // 그걸 정의해야하고
  render() {
    const { count } = this.state;
    // 패스해야하고
    return (
      <>
        <div>{count}</div>
        <button onClick={() => this.modify(count + 1)}>Increment</button>
      </>
    );
  }
}
export default App;

이렇게 하나하나 다 지정해줘야했다.

반면 hook을 사용해서 state 값을 증가시키려면

const App = () => {
  const [count, setCount] = useState(0);
  return (
    <>
      {count}
      <button onClick={() => setCount(count + 1)}>increment</button>
    </>
  );
};
export default App;

useState

useState는 array로 2가지를 준다.첫번째 요소는 value, 두번째 요소는 이를 변경하는 방법.

 

const [count, setCount] = useState(0);

이렇게 표시하는 이유도 정말 보이는 그대로였다.

array의 첫번째 요소는 value이고, 이건 0에서 시작한다. 두번째 요소인 setCount로 value인 count를 변경한다.

 

const App = () => {
  const [count, setCount] = useState(0);
  const [email, setEmail] = useState("");
  const updateEmail = (e) => {
    const {
      target: { value },
    } = e;
    setEmail(value);
    // event로부터 target을 value로 넣어서 가져온 뒤 setEmail에 가져온 그 value를 넣음
  };
  return (
    <>
      {count}
      <button onClick={() => setCount(count + 1)}>increment</button>
      <input placeholder="Email" value={email} onChange={updateEmail} />
    </>
  );
};
export default App;

이렇게 간단하게 input의 onChange 이벤트를 발생시킬 수 있다

 

EffectHooks

class 컴포넌트에서의 life cycle이었던,

 componentDidMount와 componentDidUpdate와 비슷하다

API에서 데이터를 요청할 때 사용한다