티스토리 뷰
여태까지 React 컴포넌트 안에서 데이터를 어떻게 바꾸는 지 배워봤다. 우리가 룰에 맞춰 데이터를 변경했을 때, 리액트가 화면을 어떻게 refresh하는 지 봤습니다. 여기서 refresh란 리렌더링을 말합니다.
- modifier 함수를 이용해서 컴포넌트의 state를 바꿀 때, 컴포넌트는 새로운 값을 갖고 리렌더링된다(=컴포넌트가 재생성된다).
- 데이터가 바뀔 때마다 컴포넌트를 리렌더링하고 UI를 refresh한다.
-> 결론적으로 바닐라 js 를 리액트가 완벽하게 대체하게 됩니다. HTML요소를 생성하거나 찾을 필요도 없고 이벤트리스너를 더해줄 필요도 UI를 업데이트해줄 필요도 없어지게 됩니다. 리액트를 사용하면, 바로 HTML을 만들고 그곳에 이벤트리스너를 더할 수 있으며 UI를 업데이트하면 자동으로 리렌더링됩니다.
이전에 사용하던 예시코드를 가져와서 state를 바꾸는 방법에 대해 알아봅시다.
const root = document.getElementById("root");
function App() {
const [counter, setCounter] = React.useState(0);
const onClick = () => {
//어떤 값을 부여하던 modifier 함수는 그 값으로 업데이트하고 리렌더링을 일으킨다.
setCounter((current)=> current + 1 );
};
return (
<div>
<h3>Total clicks : {counter}</h3>
<button onClick={onClick}>Click me!</button>
</div>
);
}
ReactDOM.render(<App />, root);
▶state를 바꾸는 2가지 방법
1. modifier함수에 우리가 원하는 값을 직접 넣어주기 (권고되지 않음)
- e.g.) setCounter(2234);
2. 함수를 전달하기(현재의 state를 가지고 새로운 값을 계산하기) ✔
- setCounter((current) => current +1 ); -> 해당 방법을 사용하면 리액트가 이 current가 확실히 현재 값이라는 것을 보장합니다.
- 우리가 현재 state를 기반으로 계산을 하고싶다면, 함수를 이용하는 것이다. 그래서 다음 state의 값이 현재 값을 바탕으로 나올수 있도록
- 기존에 setCounter(counter +1) 도 정상작동되는 코드입니다만 state인 counter 의 값이 변동되거나 최근값이라는 보장이 없기때문에 그런 것을 방지하기 위해서 위의 코드를 사용하는 것이 안전합니다.
'Frontend > react.js' 카테고리의 다른 글
[React JS] props 객체 (0) | 2022.03.13 |
---|---|
[React JS] Input 과 state를 사용해서 unit convertor(단위 변환기)만들기1 (0) | 2022.03.11 |
[React JS] State 에 대해서 배우기(React.useState를 사용해서 리렌더링하기) (0) | 2022.03.11 |
[React JS] 리액트로 엘리먼트 만들기(JSX, Babel) (0) | 2022.03.08 |
[React JS] 리액트로 엘리먼트 만들기(안 쓰이는 방법) (0) | 2022.03.07 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 프리온보딩 프론트엔드 챌린지 3월
- Prittier
- 부트캠프항해
- tilde caret
- 형제 요소 선택자
- getStaticPaths
- text input pattern
- getServerSideProps
- 프리렌더링확인법
- nvm경로 오류
- is()
- 원티드 프리온보딩 FE 챌린지
- D 플래그
- 원티드 FE 프리온보딩 챌린지
- reactAPI
- 항해99프론트
- && 셸 명령어
- 타입스크립트 장점
- fs모듈 넥스트
- 원티드 3월 프론트엔드 챌린지
- nvm 설치순서
- 타입스크립트 DT
- float 레이아웃
- grid flex
- 항해99프론트후기
- 원티드 프리온보딩 프론트엔드 챌린지 3일차
- aspect-ratio
- 틸드와 캐럿
- ~ ^
- 항해99추천비추천
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함