ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [React] useState 사용하기
    WEB Dev/Javascript | REACT | Node.js 2021. 12. 26. 14:21
    728x90

     

    리액트는 상태관리가 다 인거 같은데... state 개념은 지금까지 몇 번 반복해도 쉽게 이해가지 않는다.

    거기에 props까지 더해지면 갑자기 머리가 팽 돌아버리는 느낌이 든다 (⌐■_■)

     

    코딩애플 강의를 글로 정리한 적이 없어서 글로 정리하면서 참고자료를 만들어본다.

     

     


     

    State란?

    *중요한 데이터는 변수말고 리액트 state!

     

    아마 나처럼 아직 변수에도 익숙하지 않은 사람은 state라는 개념을 왜 쓰는지 조차 이해할 수 없을 때가 있다.

    그냥 변수인데, 변경되는 변수인 state는 useState라는 hook을 통해 쉽게 조작할 수 있다.

     

    요거 아니고요

     

    리액트에서 State를 쓰는 가장 큰 이유는

    리액트는 state가 변경될 때 그 state가 포함된 HTML을 자동으로 재렌더링한다.

     

    var, let, const로 선언한 변수도 여러가지 메서드를 통해 변경될 수 있다.

    하지만 이런 일반 변수들은 변경이 일어나게 되면 HTML이 새로고침 되어야 변경이 된다.

    state를 이용한 변수를 useState에서 만들어준 변경함수를 통해 변경하게 되면 변경될 때 마다 가상의 DOM을 재렌더링 해주기 때문에 사용자가 느끼기에 빠르고, 부드럽게 화면이 전환되는 것 처럼 보인다.

    결국 state는 번역하면 '상태'인 것이고, useState는 상태를 사용하는 것이고, '상태'를 변화시키는 '상태변경함수'를 통해 변경하면 그 상태를 화면에 반영해주는 것이다.

     

     

     

    useState 사용법

     

     

    useState는 리액트가 제공해주는 일종의 내장함수로 상단에 import를 해줘야 한다.

     

    import React, { useState } from 'react';

     

    이런식이다.

     

    그리고 우리는 변수를 선언해서 useState 함수를 넣어줄 수 있다.

     

    let original = useState('원본');

     

    그런데 실제로는 useState는 두 개의 값을 가지게 된다.

    original에 선언된 '원본'이라는 값이 값을 변경하는 함수를 가진다.

    그래서 아래와 같이 선언해줄 수 있다.

     

     

    let [original, originalHandler] = useState('원본');

     

    이것은 ES6의 Desturcturing 문법인데, array안의 데이터를 쉽게 변수로 저장하는 문법이다.

     

    var [one, two, three] = ['1', '2', '3']
    
    // var one = '1';
    // var two = '2';
    // var three = '3';

     

     

    이와 같은 문법을 통해 original에는 '원본' 이라는 값이, originalHandler 라는 변수에는 원본을 변경할 수 있는 함수가 할당된 것이다.

     

    let [original, originalHandler] = useState('원본');
    
    //let original = '원본';
    //let originalHandler = 원본변경();

     

    이 원본변경 함수는 onClick과 같은 이벤트 핸들러들과 함께 사용한다.

    아래는 button 태그를 클릭했을 때 original 값이 '수정'으로 변경되도록 만든 useState 사용법이다.

     

    let [original, originalHandler] = useState('원본');
    
    <button onClick = { originalHandler( original = '수정' ) } >{original}</button>

     

     

     

    728x90

    댓글

Designed by Tistory.