[TIL/React] 2023/02/18
State: 리액트가 리액트인 이유해당 강의에서는, '클릭을 할 때마다 숫자가 1씩 늘어나는' 버튼을 만들었다. 버튼을 만드는 과정을 통해 state를 이해해 봤다.버튼 태그를 통해 '클릭 버튼'을 만들었고, 숫자가 올라가는 것을 보여주기 위해 'counter'라는 변
State: 리액트가 리액트인 이유
해당 강의에서는, '클릭을 할 때마다 숫자가 1씩 늘어나는' 버튼을 만들었다. 버튼을 만드는 과정을 통해 state를 이해해 봤다.

버튼 태그를 통해 '클릭 버튼'을 만들었고, 숫자가 올라가는 것을 보여주기 위해 'counter'라는 변수를 선언하고 div 태그에 작동할 수 있도록 추가해 줬다.

클릭을 하면 숫자가 증가하는 작동방식이 필요하기 때문에, increase라는 이름의 변수를 선언하고 해당 변수를 onClick에 적용했다.
그런데 클릭을 하면 콘솔창에는 counter가 증가하는 모습을 볼 수 있지만, UI에는 반영이 되지 않았다.

리액트는 '반응'을 하기 때문에 리액트이다. 값이 변하면 자동으로 UI를 바꿔주는 '반응'을 하는 것이 React의 본질이다. 그런데 변수가 바뀔 때마다 매번 반응을 해야 하는 것은 지나치게 비효율적이다.
그래서 '변수'가 바뀔 때마다 UI를 업데이트 하는 것이 아니라, 'State'가 바뀔 때 UI를 업데이트하게 된 것이다. 즉, 반응의 대상은 'State'이다.
리액트에서 제공하는 유용한 함수들을 'React Hook'이라고 하는데 그 중 하나인 'useState'를 활용하여 숫자의 증가를 UI에 반영해 봤다.

위 코드에서 'counter2'는 초기값이 담긴 state이고, 'setCounter2'는 state값을 변경해주는 함수이다.

UI가 바뀌기는 했는데, 숫자들이 이상하다.
기본적으로 State가 바뀌면, UI가 다시 렌더링된다. 상태를 바꾸기 위해 'setState 함수'를 실행시켰지만 바로 바뀌는 것이 아니다. 이러한 작동 방식을 '비동기적 작동 방식'이라고 한다. 함수가 한바퀴 다 돌아야 실행된다.
'비동기적 작동 방식'에 대한 이해는 더 필요하겠지만, 현재로서는 "UI 렌더링을 바로 해주기 어려워서 한 박자 느리게 동작하는구나..." 정도로 만족하고 넘어갔다.
그런데 counter는 왜 계속 1일까...?
상태가 변경돼서 다시 컴포넌트를 그려주는 것을 '리렌더링'이라고 하는데, 리렌더링 과정에서 component가 처음부터 다시 실행이 되면서 0으로 초기화시킨다. state값은 초기화를 시키지 않는다.
가위바위보 게임 기본 세팅

회고
코드 복습을 열심히 하자! 내일도 화이팅!
More to read
프론트엔드와 백엔드 사이
HTTP 상태 코드는 프론트엔드에서 백엔드로 보냈던 요청의 수행 결과를 의미하는 일종의 약속이며, API를 구성하는 핵심 요소 중 하나입니다. 상태 코드와 관련하여, 백엔드는 잘 모르는 프론트엔드의 슬픈 사정이 있습니다.아래는 요청이 실패했음에도, 백엔드에서 상태 코드
JWT토큰 관리 방식 톺아보기
0. 들어가며 🎯 서비스에 접근하려는 사용자가 누구인지 확인하는 과정을 사용자 인증이라고 합니다. 인증된 사용자에게 주어진 권한을 확인하는 작업은 인가라고 부릅니다. 이번 글에서는 인가는 다루지 않습니다. 사용자 인증에는 많은 방식이 있지만, 오늘은 세션 인증 방
A2AA2A / MCP 멀티 에이전트 오케스트레이션
0. 들어가며 ✍️ Google for Developers에, 레스토랑 공급망 시나리오로 엮은 6대 프로토콜(MCP, A2A, UCP, AP2, A2UI, AG-UI)에 대한 가이드가 게시된 이후, MCP와 A2A부터 구현해 보는 것이 좋을 것 같다는 생각이 들었습니