Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 레디스 확인
- 스프링 데이타 JPA
- sql like연산자
- ...점점점문법
- 중복문자제거
- 제로베이스
- 객체의 밸류값만 찾기
- lastIndexOf()
- 재귀스왑
- 깃 토큰 만료
- 시퀄 문법
- 프론트엔드 스쿨
- 중복 문자열
- 중복된 단어
- 객체의키값만 찾기
- 문자열순서바꾸기
- 우분투 시간 변경
- sql 문자열 패턴 검색
- js 문자열을 문자배열로
- @Moditying @Query
- indexOf()
- 단어 제거
- 코딩 어?
- 객체를 배열로
- 문자열 중복
- ubuntu타임존
- 배엘에서 스왑
- 중복단어제거
- 5.3.8 Modifying Queries
- 배열을 객체로
Archives
- Today
- Total
코딩기록
리액트) 비동기적으로 실행되는 setState 본문
728x90
코드의 주석이 조금 복잡하지만 요지는
React의 setState 함수에서 콜백을 사용하는 것은 상태 업데이트가 비동기적이라는 점을 고려해 최신 상태를 안전하게 참조하기 위한 메커니즘이라는 것이다.
const [number, setNumber] = useState(1);
number는 현재 상태 값(배열)이고, setNumber는 이 상태를 업데이트하기 위한 함수.
초기값( useState(1))은 원시타입 Number다.
import React, { useState } from "react";
export default function Counter2() {
const [number, setNumber] = useState(1);
// 비동기 적으로 실행됨-콜백사용하지 않아- 상태 업뎃시 최신 상태 반영안됨.
// useState(1)즉, setState를 호출할때
// React는 제공한 객체를 현재 state로 병합한다.
// const add = () => setNumber( number + 1);
// const subtract = () => setNumber( number - 1);
// const multiplyBy2 = () => setNumber( number * 2);
// setState 비동기 적으로 실행됨-콜백사용으로 상태 업뎃시 최신 상태를 반영
// number라는 (현재의 state를) 인자를 함수()로 넘겨주면
// 다음 병합시에 업데이트된 number가 넘어가도록 되어있음.
// 즉, setState는 비동기적으로 실행되는데 비동기적으로 실행되는 문제를 피하려면
// 현재의 state를 함수로 넘겨주면 된다.
const add = () => setNumber((number) => number + 1);
const subtract = () => setNumber((number) => number - 1);
const multiplyBy2 = () => setNumber((number) => number * 2);
const multiplyBy2AndAddBy1 = () => {
multiplyBy2(); // setNumber(number * 2) -> UI
add(); // setNumber( + 1); -> UI
};
/*
여러 객체를 병합하는 메서드 Object.assign()
number= 3 3*2 = number= 6 3+1 = number = 4 넘버3에 값이 덮어 씌워짐.
같은 넘버라는 키를 3개나 갖고 있어서 다 덮어 씌워져서 젤 마지막 값이 출력됨.
Object.assign({ number, number : number * 2, number : number + 1 });
*/
return (
<div>
<h1>Number : {number}</h1>
<div>
<button onClick={add}>+ 1</button>
<button onClick={subtract}>- 1</button>
<button onClick={multiplyBy2}>*2</button>
<button onClick={multiplyBy2AndAddBy1}>*2 + 1</button>
</div>
</div>
);
}
반응형
'프론트 > 리액트' 카테고리의 다른 글
리액트) React의 hook, useEffect() 의존성 배열이 있을때, 없을때 (0) | 2025.01.07 |
---|---|
리액트) 상태(state)관리- 원시타입 state와 참조타입 state (0) | 2025.01.07 |
리액트 관련 셋팅 CRA(리액트 프로젝트 생성), react / react-dom, Babel, Webpack, HMR 셋팅 (0) | 2025.01.05 |
리액트)2주차 학습 - 기본부터 끝까지 러닝메이트 HTML/CSS (0) | 2024.06.10 |
리액트)1주차 학습 - css 애니메이션 (0) | 2024.06.08 |
Comments