리액트로 카운터 버튼을 뚝딱뚝딱 만들어보자

2023. 10. 16. 22:33·프로젝트

안녕하세요 
https://www.udemy.com/course/react-next-master/
강의에서 이런 걸 만들어본다고 하길래, 세팅만 해놓고 강의 보기 전에 먼저 만들어봤어요
 
우선 현재 카운트를 나타내는 컴포넌트와 버튼이 있는 컴포넌트로 분리시키고 각각 Viewer.jsx, Controller.jsx로 이름 지었습니다.  Controller.jsx에서 버튼을 누르면 그 값을 props를 통해 Viewer.jsx 전달하면 될 것 같습니다.
 
 
 
 

Controller.jsx, 이것으로는 해결 할 수 읎어

처음에는 Controller.jsx에서 버튼의 값을 직접 끌어다가 쓸 생각을 했습니다만, Controller.jsx에 있는 버튼에서 받아온 value값을 Viewer.jsx로 넘길 수 있는 방법이 생각나지 않았어요 
 
근데 학교 프로젝트에서 머리 깨져가면서 배웠던 것이 생각나서 바로 써봤습니다.
 
 
 
 
 

App.jsx

바로바로
 
값을 저장할 useState와 onClickHandler 함수를 Viewer 컴포넌트와 Controller 컴포넌트를 둘 다 렌더링 하는 최종(?)컴포넌트에 선언하는 것입니다. 여기서는 App컴포넌트에서 둘 다 끌어오기 때문에 App 컴포넌트에 핸들러 함수와 useState를 만들었어요
 
 
동작 순서를 미리 정리해 봅시다.
 
1. App 컴포넌트에서 값을 받아올 onClickHandler 함수와 저장할 useState를 선언한다.
 
2. onClickHandler 함수를 Controller 컴포넌트에 전달하고, 각 버튼에 해당하는 값을 받아서 useState를 통해 저장한다. (Controller 컴포넌트에서 받은 값을 App 컴포넌트로 넘기는 것)
 
3. 다시 App컴포넌트로 돌아와서, useState를 통해 저장한 값을 Viewer 컴포넌트에 매개변수로 전달해서 렌더링 한다.
 
 
 
 
 

App 컴포넌트의 onClickHandler

App 컴포넌트에서 onClickHandler 함수를 props를 통해 Controller 컴포넌트로 보냅니다. onClickHandler 함수는 value 값을 추적해서 setNumber의 인자로 전달합니다.
 
 
 

Controller.jsx

Controller 컴포넌트에서는 매개변수 handler를 통해 onClickHandler 함수를 받고 각 버튼에 전달합니다.
 
이렇게 되면 버튼을 클릭했을 때, handler가 실행되고,  App 컴포넌트에 존재하는 상태변화함수 setNumber의 인자로 value값을 전달하게 됩니다. 즉 -1 버튼을 누르면 -1의 값이 App 컴포넌트의 setNumber 함수의 인자로 전달되는 것이죠.
 
왜냐??? onClickHandler 함수가 value값을 추적해서 setNumber의 인자로 전달하는 녀석이기 때문이죠!
 
 
 

App.jsx

App.jsx로 돌아왔습니다. 값을 누적시키기 위해서, setNumber의 인자로 number와 Controller에서 끌어온 값을 더해서 전달합니다. 
 
 
 

이후 number을 Viewer 컴포넌트로 보냅니다
 
 
 

Viewer.jsx

App 컴포넌트에서 받아온 값을 매개변수 number에 저장하고 최종적으로 렌더링 하면 끝입니다.
 
 
 
 

CSS 적용을 안해서 조잡해 보이지만 성능은 확실해요
 
누군가에겐 당연한 코드일 수 있으나,,, 리액트가 뭔지도 모를 때, 이 단순한 걸 이해하려고 몇 시간을 쏟았기에... 다시 한번 정리해 봤습니다.
 
결국 이렇게 다시 만나게 되는 걸 보면 헛된 삽질은 없는 것 같습니다. 감사합니다

'프로젝트' 카테고리의 다른 글

행복..사랑..건강... gif 만들기  (0) 2024.04.17
🤔  (0) 2023.10.15
개쩌는 덧셈 계산기 만들기  (0) 2023.10.12
'프로젝트' 카테고리의 다른 글
  • 행복..사랑..건강... gif 만들기
  • 🤔
  • 개쩌는 덧셈 계산기 만들기
tteokbokki-master
tteokbokki-master
공부하며 알아가는 걸 조금씩 정리하고 있어요
  • tteokbokki-master
    용로그
    tteokbokki-master
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 프로그래밍 언어
        • HTML & CSS
        • JavaScript
        • React 기초
        • 파이썬 기초
        • TanStack-Query
        • C언어 기초
        • git
        • 리눅스
        • 코딩테스트 공부
      • 개발 지식 N
      • 회고 및 기록
      • 프로젝트
        • TodoList 만들기
        • 학수고대 프로젝트
      • 기타
        • [JS-0기] 한입 FE 챌린지
  • 인기 글

  • 글쓰기 / 관리
  • hELLO· Designed By정상우.v4.10.3
tteokbokki-master
리액트로 카운터 버튼을 뚝딱뚝딱 만들어보자
상단으로

티스토리툴바