jjinny_0609
냐냥
jjinny_0609
전체 방문자
오늘
어제
  • 분류 전체보기 (249)
    • IT (18)
      • Eclipse (1)
      • 라즈베리파이 (8)
      • 정보처리기사 (2)
      • 팀 프로젝트 (5)
      • 자료구조 (1)
      • CS 지식 (0)
    • 프로그래밍 언어 (75)
      • Java (33)
      • 파이썬 (4)
      • Node.js (38)
    • 프론트엔드(Frontend) (83)
      • HTML (7)
      • CSS (8)
      • JavaScript (10)
      • jQuery (2)
      • React (50)
      • Vue.js (6)
    • 백엔드(Backend) (62)
      • 네트워크 (1)
      • 데이터베이스 (49)
      • Spring (6)
      • JSP (6)
    • 협업 도구 (6)
      • Git & GitHub (6)
    • 리뷰 (1)
      • 향수 (1)
    • Game Engine (2)
      • 언리얼 엔진5 (1)
      • Unity (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 블로그관리 홈
  • 글쓰기
  • 글관리

공지사항

인기 글

hELLO · Designed By 정상우.
jjinny_0609

냐냥

[React] React에서 상태를 업데이트하는 함수를 전달하는 예제
프론트엔드(Frontend)/React

[React] React에서 상태를 업데이트하는 함수를 전달하는 예제

2023. 11. 22. 19:48
728x90

안녕하세요! 이번 블로그 글에서는 React에서 상태를 업데이트하는 함수를 자식 컴포넌트로 전달하고 활용하는 예제를 살펴보겠습니다. 이를 통해 각 컴포넌트 간의 효율적인 상태 관리 방법을 배울 수 있습니다.

Box 컴포넌트 생성

먼저, 간단한 박스 컴포넌트(Box.jsx)를 생성합니다. 이 컴포넌트는 클릭할 때마다 색이 변경되는 기능을 가지고 있습니다.

import "./Box.css";
function Box({ isActive, toggle }) {
  return (
    <div
      onClick={toggle}
      className="Box"
      style={{ backgroundColor: isActive ? "red" : "black" }}
    ></div>
  );
}

export default Box;

BoxGrid 컴포넌트 생성

다음으로, Box 컴포넌트를 이용하여 게임 보드(Grid)를 생성하는 BoxGrid 컴포넌트를 만듭니다. 이 컴포넌트는 각 박스의 상태를 관리하고, 리셋 기능을 제공합니다.

import Box from "./Box";
import { useState } from "react";
function BoxGrid() {
  const [boxes, setBoxes] = useState([
    false,
    false,
    true,
    false,
    true,
    false,
    false,
    false,
    false,
  ]);
  const reset = () => {
    setBoxes([false, false, false, false, false, false, false, false, false]);
  };

  const toggleBox = (idx) => {
    setBoxes((oldBoxes) => {
      return oldBoxes.map((value, i) => {
        if (i === idx) {
          return !value;
        } else {
          return value;
        }
      });
    });
  };
  return (
    <div className="BoxGrid">
      {boxes.map((b, idx) => (
        <Box key={idx} isActive={b} toggle={() => toggleBox(idx)} />
      ))}
      <button onClick={reset}>Reset</button>
    </div>
  );
}

export default BoxGrid;

스타일링

마지막으로, 각 박스와 게임 보드에 대한 스타일을 지정하는 CSS 파일을 만듭니다.

/* Box.css */

.Box {
  width: 100px;
  height: 100px;
  display: inline-block;
  margin: 10px;
}

.BoxGrid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
}

이제 이 예제를 통해 React에서 상태를 효율적으로 관리하고, 함수를 자식 컴포넌트로 전달하는 방법을 이해할 수 있습니다. 계속 진행해주세요! 🚀

 

클릭하면 'red' 색상으로 변경
리셋시

728x90

'프론트엔드(Frontend) > React' 카테고리의 다른 글

[React] 예제로 배우는 컴포넌트 설계 및 구현  (0) 2023.11.22
[React] 점수 기록기 예제 - React 연습  (0) 2023.11.21
[React] 배열의 모든 요소 업데이트하기  (0) 2023.11.21
[React] 배열을 업데이트하는 일반적인 패턴  (0) 2023.11.21
[React] 리액트에서 배열 상태 관리하기: 배열과 상태 활용 방법  (0) 2023.11.21
    jjinny_0609
    jjinny_0609
    뉴비 개발자의 학습 내용을 정리한 블로그입니다.

    티스토리툴바