What is ‘state’


  • state 는 변수 대신 사용하는 데이터 저장공간이다.
  • 문자, 숫자, array, object 모두 저장 가능하다.


Why to use ‘state’


  • react 를 웹앱처럼 동작하게 하는 데 핵심적인 역할을 한다.
  • state 로 만들어진 데이터가 바뀌면 새로고침 없이도 데이터를 담고 있는 html 이 자동 재렌더링 된다.


How to use ‘state’


1 . useState 를 import 한다.

import { useState } from 'react';


2 . java script ES6 destructuring 문법을 사용하여 state 를 선언한다.

let [title, setTitle] = useState(['강남 우동 맛집', '남자 코트 추천', '개발팀 모집'])
let [thumbCount, setThumbCount] = useState(0)


ES6 destructuring 문법이란?

​ ✔️ array, objectd 에 있던 자료를 변수에 쉽게 담고 싶을 때 사용

var [a, b] = [10, 100] // a 에 10, b 에 100 이 담긴다


3 . html(jsx) 의 필요한 부분에 데이터 바인딩을 한다.

<div>
  <h3> { title[0] }{' '}
    <span>👍</span>
    { thumbCount } 
  </h3>
</div>


4 . 데이터 값을 변경하고 싶을 때 함수를 사용한다.

<div>
  <h3> { title[0] }{' '}
    <span
      onClick={() => {
        setThumbCount(thumbCount + 1)
      }} style=>
      👍
    </span>
    { thumbCount } 
  </h3>
</div>


유의사항


1 . array 가 저장된 state 를 사용하는 방법

let [title, setTitle] = useState(['강남 우동 맛집', '남자 코트 추천', '개발팀 모집'])

function changeTitle() {
  var newArray = [...title];
  newArray[0] = '강남 라멘 맛집';
  setTitle( newArray );
}

var newArray = title 이 아닌 var newArray = [...title] 이라 써야한다.

var newArray = title 라고 쓰면 값 공유가 이루어진다.

하지만 var newArray = [...title] 라고 쓰면 deep copy가 이루어진다. 즉, 서로 독립적인 값을 가지는 복사가 이루어진다.

더 자세한 사항은 reference data type 을 검색해서 찾아보자!

React 의 대원칙 : immutable data.

즉 state data 들은 직접적인 수정이 발생하지 않도록 하기.

Leave a comment