본문 바로가기

(펌)개념 정리

State란?

State란 무엇인가?

  • 우리가 앞에서 name이라는 정보를 const name = “홍부인”; 이라고 만들었는데, 만약 name이라는 값이 바뀌어야만 하는 정보였어야 했다면 state로 생성합니다.
  • 💡 State란 컴포넌트 내부에서 바뀔 수 있는 값을 의미합니다.

State 만들기</aside>GrandFather 컴포넌트에서 기존에 있었던 const name = “김할아” 라는 코드가 const [name, setName] = useState("김할아"); 라는 익숙하지 않은 코드로 바뀌었네요.우리는 앞으로 useState 라는 함수를 이용해서 state를 만듭니다. useState 는 state를 만들어주는 리액트에서 제공하는 기능입니다. 그래서 리액트에만 존재하는 개념이자 기능입니다. 그리고 앞으로 우리는 이것을 “기능” 이라고 하지 않고 “훅” 이라고 표현하겠습니다.

const [ value, setValue ] = useState( 초기값 )

먼저 const 로 선언을 하고 [ ] 빈 배열 을 생성하고, 배열의 첫번째 자리에는 이 state의 이름, 그리고 두번째 자리에는 set 을 붙이고 state의 이름을 붙입니다. 그리고 useState( ) 의 인자에는 이 state의 원하는 처음값 을 넣어줍니다.저는 name 이라는 state를 만들었고, name state의 처음값은 “김할아”로 정했습니다. 어떤가요? 우리는 처음값을 initial state 라고 부릅니다. state의 정의처럼, 언제든지 변할 수 있는 값이기 때문에 처음값 이라는 개념이 존재하는 것 입니다.

// src/App.js

import React, { useState } from "react";

function Child(props) {
  return <div>{props.grandFatherName}</div>;
}

function Mother(props) {
  return <Child grandFatherName={props.grandFatherName} />;
}

function GrandFather() {
  const [name, setName] = useState("김할아"); // state를 생성
  return <Mother grandFatherName={name} />;
}

function App() {
  return <GrandFather />;
}

export default App;
  • 앞으로 누가와서 “state를 만들어보세요.” 라고 한다면, useState를 사용해서 만들면 됩니다. 🔥
  • const [name, setName] = useState("김할아");
  • useState 훅을 사용하는 방식은 아래와 같습니다.
  • import React, { useState } from 'react'; function GrandFather() { const [name, setName] = useState("김할아"); // 이것이 state! return <Mother grandFatherName={name} />; } // .. 중략
  • 아래 코드를 보세요.
  • 💡 State를 만들 때는 useState()를 사용한다.

State 변경하기</aside>우리는 setName 을 통해 이름을 바꿀 수 있습니다. “박할아"로 바꾸고 싶으니 setName(”박할아”) 를 하면 이름이 바뀔 것 입니다. 예제는 우리에게 버튼이 있고, 그 버튼을 눌렀을 때 setName("박할아") 를 실행하도록 해보겠습니다.일단 Child 컴포넌트에 할아버지 이름 바꾸기 라는 라벨을 가진 버튼을 만들어줄게요.그리고 이 버튼을 눌렀을 때 setName 을 실행 할 수 있도록 준비합니다.그 다음 우리는 GrandFather에 있는 setName을 Child에게 전달을 해줘야 겠죠. 주고 받고, 주고 받고해서 전달해줍니다.주고받고 하는 과정이 조금 번거로웠지만, 어떤가요? 이름이 잘 바뀌나요? 잘 하셨습니다. 하지만 이렇게 바뀐 값은 브라우저를 새로고침하면 다시 초기값으로 바뀝니다. setName을 통해서 바꾼 값은 어디에 저장되는 것이 아니기 때문에 단순히 화면에서만 바뀐 값으로 다시 렌더링이 되는 것입니다.

// src/App.js

import React, { useState } from "react";

function Child(props) {
  return (
    <div>
      <button
        onClick={() => {
          props.setName("박할아");
        }}
      >
        할아버지 이름 바꾸기
      </button>
      <div>{props.grandFatherName}</div>
    </div>
  );
}

function Mother(props) {
  return (
    <Child grandFatherName={props.grandFatherName} setName={props.setName} />
  );
}

function GrandFather() {
  const [name, setName] = useState("김할아");
  return <Mother grandFatherName={name} setName={setName} />;
}

function App() {
  return <GrandFather />;
}

export default App;
  • 💡 state를 변경할때는 setValue(바꾸고 싶은 값) 를 사용한다.


 출처 - 스파르타코딩클럽(항해99과정):https://hanghae99.spartacodingclub.kr/

'(펌)개념 정리' 카테고리의 다른 글

의존성 배열(dependency array) 이란?  (0) 2022.07.29
useEffect  (0) 2022.07.29
defaultProps란?  (0) 2022.07.29
props - children  (0) 2022.07.29
부모와 자식관계에 놓인 컴포넌트  (0) 2022.07.29