티스토리 뷰
React에 useState로 변수의 상태를 변화시킬 수 있는 간단한 예제이다.
import { useState } from 'react';
import './App.css';
export default function App() {
let count = 0;
const [count2, setCount2] = useState(0)
const increase = () => {
count = count + 1
//count2 = count2+1
setCount2(count2 + 1)
console.log("count work?", count)
console.log("count2 work?", count2)
}
return (
<main>
<div>count : {count}</div>
<div>count2 : {count2}</div>
<div>setCount2 state : {count2} </div>
<button onClick={increase}>증가</button>
</main>
)
}
실행화면
state가 바뀌면 UI가 자동으로 업데이트 되는구나! 새로운 값으로 다시 그려주는구나!
Console창
이상하게 count변수는 1 이며
state의 값은 한박자씩 늦게 증가함을 알 수 있다.
왜? Why? state의 값은 한박자씩 늦을까?
state
state는 UI를 다시 그려준다. 언제? 함수가 끝나면 업데이트하기 시작한다. (state값이 바로 바뀌는것이 아니다.)
모든UI가 바뀌어야하는 set함수들을 모아서 함수가 끝나면 처리한다.
그말은? 비동기적이다.
state사용할 때 주의사항임으로 잘 기억해두도록 해야한다.
count 변수 값은 왜 계속 1일까?
state값이 업데이트 될 때마다 컴포넌트가 다시 실행이 되면서 새로 업데이트 된 UI값을 그려주게 된다.
function을 다시 실행되기 떄문에 let count=0 부터 시작하게 됨으로 다시 초기화 된다.
0->1 0->1 ...값이 누적이 안된다.
그래서 변수는 잠깐 저장해두는 값으로만 사용하고 나머지는 state로 사용할 것이다.
state의 값은 react가 주시하는 값이다.
state에 있는 값은 저장이 되어있다. 그것이 useState가 하는 일이다. 값을 잃어버리지 않고 기억하고 있다.
- 참고 -
React랑 Vue는 라이브러리이다.
스벨트는 컴파일러이고
Angular, Flutter 는 프레임워크이다.
'ALL' 카테고리의 다른 글
API 란? (0) | 2023.01.02 |
---|---|
2022 회고록 (0) | 2023.01.01 |
modal 열기, 닫기, 닫기 이벤트처리 및 해제 (0) | 2022.12.13 |
LOB (0) | 2022.11.29 |
선언형 코드/ 명령형 코드 (0) | 2022.09.11 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Spark
- 옵티마이저
- JavaScript
- 자바스크립트
- 자바의정석
- React
- 스프링 프로젝트
- EC2
- @Configuration
- 이정환
- node
- Oracle
- 스프링
- 한입크기로 잘라먹는 리액트
- AWS
- MySQL
- 친절한SQL튜닝
- 리액트
- 인덱스
- 데브캠프
- 멀티스레딩
- SQL
- 남궁성
- 코드로 배우는 스프링 웹 프로젝트
- Node.js
- 스프링의정석
- 데이터베이스
- spring
- 스프링 빈
- 시큐리티
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함