본문 바로가기
TIL/리액트

7. useState를 통해 컴포넌트에서 바뀌는 값 관리하기

by _din 2022. 6. 23.

출처 - 벨로퍼트

https://react.vlpt.us/basic/07-useState.html

 

이벤트 설정

import React from 'react';

function Counter() {
  const onIncrease = () => {
    console.log('+1')
  }
  const onDecrease = () => {
    console.log('-1');
  }
  return (
    <div>
      <h1>0</h1>
      <button onClick={onIncrease}>+1</button>
      <button onClick={onDecrease}>-1</button>
    </div>
  );
}

export default Counter;

함수를 만들고, button 의 onClick 으로 각 함수를 연결해주었습니다. 리액트에서 엘리먼트에 이벤트를 설정해줄때에는 on이벤트이름={실행하고싶은함수} 형태로 설정해주어야 합니다.

여기서 주의하셔야 하는 점은, 함수형태를 넣어주어야 하지, 함수를 다음과 같이 실행하시면 안됩니다.

onClick={onIncrease()}

이렇게 하면 렌더링되는 시점에서 함수가 호출되버리기 때문입니다. 이벤트를 설정할때에는 함수타입의 값을 넣어주어야 한다는 것, 주의해주세요.

 

동적인 값 끼얹기, useState

import React, { useState } from 'react';

이 코드는 리액트 패키지에서 useState 라는 함수를 불러와줍니다.

 

const [number, setNumber] = useState(0);

useState 를 사용 할 때에는 상태의 기본값을 파라미터로 넣어서 호출해줍니다. 이 함수를 호출해주면 배열이 반환되는데요, 1) 첫번째 원소는 현재 상태 2) 두번째 원소는 Setter 함수 - 배열 비구조화 할당 을 통하여 각 원소를 추출

위 코드를 풀어쓰면 다음과 같다.

const numberState = useState(0);
const number = numberState[0];
const setNumber = numberState[1];

 

Setter 함수는 파라미터로 전달 받은 값을 최신상태로 설정해줌

 

함수형 업데이트

import React, { useState } from 'react';

function Counter() {
  const [number, setNumber] = useState(0);

  const onIncrease = () => {
    setNumber(prevNumber => prevNumber + 1);
  }

  const onDecrease = () => {
    setNumber(prevNumber => prevNumber - 1);
  }

  return (
    <div>
      <h1>{number}</h1>
      <button onClick={onIncrease}>+1</button>
      <button onClick={onDecrease}>-1</button>
    </div>
  );
}

export default Counter;

 

반응형

'TIL > 리액트' 카테고리의 다른 글

10. useRef로 특정 DOM 선택하기  (0) 2022.06.25
9. 리액트 상태에서 객체 수정  (0) 2022.06.24
8. input 상태 관리하기  (0) 2022.06.23
6. 조건부 렌더링  (0) 2022.06.23
5. props 를 통해 컴포넌트에게 값 전달하기  (0) 2022.06.23

댓글