기은P
시간이 멈추는 장소
기은P
  • Programming (272)
    • 개발노트 (1)
    • FrontEnd (56)
      • ES&JS 문법 (14)
      • HTML&CSS (4)
      • React 기본 (18)
      • React 심화 (12)
      • React 이슈 (2)
      • Project 연습 (1)
      • Next.js (5)
    • Backend&Devops (33)
      • AWS (2)
      • Docker (9)
      • Jenkins (6)
      • Nginx (6)
      • Node.js (1)
      • ElasticSearch (5)
      • 프레임워크&아키텍처 (2)
      • 암호화 (0)
      • 기타 (2)
    • 알고리즘 (3)
    • C# (8)
      • WPF (8)
    • Java (51)
      • 순수 Java (18)
      • RDF&Jena (12)
      • RCP&GEF (9)
      • JMX (5)
      • JMapper (3)
      • 오류해결 (4)
    • Database (21)
      • RDBMS (9)
      • NoSQL (2)
      • TSDB (1)
      • GraphQL (1)
      • Hibernate (3)
      • 데이터베이스 이론 (4)
      • Redis (1)
    • 프로토콜 (11)
      • Netty (4)
      • gRPC (5)
      • 프로토콜 개념 (2)
    • Server (4)
      • Linux (4)
    • 2020 정보처리기사 필기 (43)
      • 목차 (1)
      • 기출문제 (1)
      • 1과목 - 소프트웨어 설계 (6)
      • 2과목 - 소프트웨어 개발 (7)
      • 3과목 - 데이터베이스 구축 (8)
      • 4과목 - 프로그래밍 언어 활용 (7)
      • 5과목 - 정보시스템 구축 관리 (10)
    • 2020 정보처리기사 실기 (31)
      • 목차 (4)
      • 기출예상문제 (19)
      • 실기요약 (8)
    • 빅데이터분석기사 필기 (4)
      • 목차 (0)
      • 필기 요약 (3)
    • 전기 공학 (1)
      • CIM (1)
    • 산업자동화시스템 (3)
      • SCADA (1)
      • OPC UA (2)
    • 디자인패턴 (1)
    • 휴지통 (0)

공지사항

  • 공지사항/포스팅 예정 항목

최근 댓글

최근 글

전체 방문자
오늘
어제

티스토리

hELLO · Designed By 정상우.
기은P

시간이 멈추는 장소

FrontEnd/React 기본

[React] React.js 강좌 13. useState

2022. 3. 7. 23:22
반응형

1. useState란?

 

리액트의 Hooks 기능 중 하나인 useState는 함수형 컴포넌트를 사용하는데 있어서 가장 많이 사용되는 컴포넌트 입니다.

컴포넌트에서 동적으로 변화되는 값을 state(상태)라고 부릅니다. 이 상태를 관리하기 위해 사용되는것이 useState라고하는 Hook입니다.

 

 

가장 유명한 버튼을 누르면 숫자가 바뀌는 카운터 예제를 보겠습니다.

 

src/Counter.js

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;

 

 

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

useState를 사용할 때, state의 기본값을 파라미터로 넣어서 호출합니다.
이 함수를 호출하면 배열이 반환되는데, 여기서 첫번째 원소는 현재 상태,
두번째 원소는 Setter 함수입니다.

 

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

앞서 설명한 코드를 아래 3줄과 같이 작성할 수 있지만
배열 비구조화 할당을 통해 각 원소를 추출해서 위와 같이 [ , ]로 묶어서 사용합니다.

 

 

 

2. props를 이용해 state의 배열(Map)을 요소로 전달할 때

App.js

/***** App.js (함수형 컴포넌트) *****/

import React, { useState } from 'react';
import MyComponent from './components/MyComponent';

const App = () => {
  const [persons, setPersons] = useState([
    { id: 0, name: "ing-yeo", desc: "잉여인간" },
    { id: 1, name: "react", desc: "리액트" },
    { id: 2, name: "js", desc: "자바스크립트" },
  ]);

  return (
    <div>
      {persons.map(person => (
        <MyComponent key={person.id} person={person} />
      ))}
    </div>
  );
};

export default App;

 

MyComponent.jsx

/***** ./components/MyComponent.jsx (함수형 컴포넌트) *****/

import React from 'react';

const MyComponent = (props) => {
  const person = props.person;

  return (
    <div>
      <h1>{person.name}</h1>    
      <p>{person.desc}</p>
    </div>
  );
};

export default MyComponent;

 

 

ES6의 구조분해(Destructing)을 이용하면 MyComponent측의 코드를 더 간결하게 줄일 수 있습니다.

import React from 'react';

const MyComponent = (props) => {
  const { name, desc } = props.person; // 비구조화 할당 문법

  return (
    <div>
      <h1>{name}</h1>
      <p>{desc}</p>
    </div>
  );
};

export default MyComponent;

 

 

 

반응형
저작자표시 변경금지 (새창열림)

'FrontEnd > React 기본' 카테고리의 다른 글

[React] React.js 강좌 15. useMemo  (0) 2022.03.08
[React] React.js 강좌 14. useEffect  (0) 2022.03.07
[React] React.js 강좌 12. useRef  (0) 2021.12.10
[React] React.js 강좌 11. Context  (0) 2021.12.10
[React] React.js 강좌 10. map, slice, concat, spread 사용법  (0) 2021.12.07
    'FrontEnd/React 기본' 카테고리의 다른 글
    • [React] React.js 강좌 15. useMemo
    • [React] React.js 강좌 14. useEffect
    • [React] React.js 강좌 12. useRef
    • [React] React.js 강좌 11. Context
    기은P
    기은P
    기은P의 블로그 일상과 개발 관련 포스팅 #React #Typescript #Next #Nest https://github.com/kimdongjang

    티스토리툴바