[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
Amazon VPC Architecture 이해하기
새로운 프로젝트를 기획하며, 개발에서 무엇을 가장 먼저 고민해야 하는지 다시 돌아보게 되었습니다.한때는 프론트엔드가 모든 설계의 출발점이라고 믿었습니다. 유저가 무엇을 보고, 어떤 흐름에서 머무르고 이탈하는지에 대한 이해 없이 서비스를 만든다는 건 불가능하다고 생각했기
'원사이트'프론트엔드 관점으로 알고리즘 이해하기
오랜만에 방법론에 관한 글을 쓰게 되었습니다. 최근 상황은 이렇습니다. SSAFY에서는 하루에 엄청난 양의 알고리즘 문제들을 과제로 수행하게 됩니다. 그 과정에서, '구현력'이 매우 떨어진다는 생각이 들었습니다. 완전히 어려운 문제라면 '아쉬움'이라는 감정조차 느끼지
SubnetVPC 설계의 시작: IP와 Subnet
반복되는 루틴 속에서 얻은 안정감을 발판 삼아, 이제는 기술적 스펙트럼을 넓히기 위한 개인 프로젝트에 착수하고자 합니다.이번 프로젝트의 목표는 단순한 포트폴리오 구축을 넘어, 실제 서비스 수준의 블로그 시스템 구현과 다국어 처리 적용 등 실무에 가까운 역량을 한 단계