짧은 시간 간격으로 연속해서 이벤트가 발생했을 때 과도한 이벤트 핸들러 호출을 방지하는 기법인 쓰로틀링, 디바운싱
이란? 

Timer Web API 중 setTimeout 메소드를 사용하여 쓰로틀링과 디바운싱을 각각 구현해보고 원리를 이해하고 적용하실 줄 알아야 합니다.

 

 

짧은 시간 간격으로 연속해서 발생한 이벤트들을 일정시간 단위(delay)로 그룹화하여 처음 또는 마지막 이벤트 핸들러만 호출되도록 하는 것

'Front-End > React' 카테고리의 다른 글

[React] cra를 안쓰고 웹팩, 바벨등을 사용하는 이유  (2) 2023.11.22
[React] Duck 패턴 등장배경  (0) 2023.11.20
[React] Thunk  (2) 2023.11.18
[React]  (0) 2023.11.17
[React] Redux 설정  (0) 2023.11.12

// thunk 함수는 createAsyncThunk 라는 툴킷 API를 사용해서 생성합니다.

 

니다. 이 API는 함수인데, 첫번째 인자에는 Action Value, 두번째 인자에는 함수가 들어갑니다. 이 함수에 우리가 하고 싶은 작업들을 구현하면 됩니다.

'Front-End > React' 카테고리의 다른 글

[React] Duck 패턴 등장배경  (0) 2023.11.20
[React] Throttling & Debouncing이란?  (0) 2023.11.18
[React]  (0) 2023.11.17
[React] Redux 설정  (0) 2023.11.12
[React] Redux Toolkit 에 대해서  (0) 2023.11.10

외부 함수보다 중접 함수가 더 오래 유지되는 경우, 중첩 함수는 이미 생명 주기가 종료한 외부 함수의 변수를 (여전히) 참조할 수 있다. ← 이 개념에서 중첩 함수가 바로 클로저 입니다.

쿼리가 완료되지 않앗을때 isLoding이 true가 됨 

- new 쿼리 클라이언트 상위에서 했기에 useQ 쿼리 클라이언트 해야

상위를 하위에서 이용함 (하나의 흐름으로서)

- query key 는 겹치면 안됨 

ex) useQuery('qk2',api); 
useQuery('qk2', api); X

쿼리에서 배열은 순서를 따지고 객체는 순서를 안따짐

- 변경이 일어난경우 혹시나 갱신해줘야 하는 데이터가 없는지를 반드시 생각 

있다면 해당 쿼리키를 invalidate를 해줘야함 

'Front-End > React' 카테고리의 다른 글

[React] Throttling & Debouncing이란?  (0) 2023.11.18
[React] Thunk  (2) 2023.11.18
[React] Redux 설정  (0) 2023.11.12
[React] Redux Toolkit 에 대해서  (0) 2023.11.10
[React] 캐싱 기법이란?  (0) 2023.11.10

1) 타입사용시 const a : number = '5' ; 이부분에서 변수뒤에 타입이 오며 number를 Number처럼 대문자로 쓰면 안됩니다.

 

2) 명시적으로 const b : any 이렇게 any를 사용할일은 거의 없을것입니다. 

 

3) 매개변수 바로 뒤의 값이 return값 타입사용 자리 

 

4) 함수의 return의 타입사용자리는 매개변수 바로뒤인데

화살표함수의 return의 타입사용자리는 => 뒤에 나온다는것 

 

ex)
function add(x: number, y: number) : number // 함수 

type Add = (x: number, y: number) => number;  // 화살표함수

 

tip) 타입을 지워도 말이 되는 자바스크립트 코드여야한다 

 

1) js에서는 에러가 아닌것이 ts에는 에러가 날수 있습니다.

예시로 

 

 

1)  //@ts-ignore 

=> 에러가 나든 안나든 에러를 무시하기 위해서 사용

 

2) //@ts-expect-error 

=> 다음 줄의 코드가 반드시 에러가 나는 코드이지만 무시할때 사용 

 

1), 2) 중에 사용할때는  2번이 권장됩니다(왜냐하면 확실한 에러를 알릴 수 있기 때문입니다)

 src/configStore.js

  • src/configStore.js 에 아래 코드를 입력
import { createStore } from "redux";
import { combineReducers } from "redux";

/*
1. createStore()
리덕스의 가장 핵심이 되는 스토어를 만드는 메소드(함수) 입니다. 
리덕스는 단일 스토어로 모든 상태 트리를 관리한다고 설명해 드렸죠? 
리덕스를 사용할 시 creatorStore를 호출할 일은 한 번밖에 없을 거예요.
*/

/*
2. combineReducers()
리덕스는 action —> dispatch —> reducer 순으로 동작한다고 말씀드렸죠? 
이때 애플리케이션이 복잡해지게 되면 reducer 부분을 여러 개로 나눠야 하는 경우가 발생합니다. 
combineReducers은 여러 개의 독립적인 reducer의 반환 값을 하나의 상태 객체로 만들어줍니다.
*/

const rootReducer = combineReducers({}); 
const store = createStore(rootReducer); 

export default store;



모듈
이란, State의 그룹이라고 했습니다. 우리의 첫 모듈은 카운터 프로그램에 필요한 State들이 모여있는 모듈이 될 것 입니다. 아래 순서대로 파일을 생성하고 코드를 입력해볼까요?

 

 첫 모듈 만들기

  1. modules 폴더에 counter.js 파일을 생성한다.
  2. 코드를 작성한다.

1) initialState === 초기 상태값

 

2) Reducer === 변화를 일으키는 함수

 

카운터 모듈을 스토어에 연결하기

// src/redux/config/configStore.js


// 원래 있던 코드
import { createStore } from "redux";
import { combineReducers } from "redux";

// 새롭게 추가한 부분
import counter from "../modules/counter";

const rootReducer = combineReducers({
  counter: counter, // <-- 새롭게 추가한 부분
});
const store = createStore(rootReducer);

export default store;

 

위와 같이 코드를 추가하면, 스토어와 모듈이 연결됩니다. 이렇게 스토어와 모듈을 연결시키는 코드는 우리가 모듈을 추가할 때마다 똑같이 진행해주면 됩니다.
 

 

스토어와 모듈 연결 확인하기

  • (1) useSelector = 스토어 조회

'Front-End > React' 카테고리의 다른 글

[React] Thunk  (2) 2023.11.18
[React]  (0) 2023.11.17
[React] Redux Toolkit 에 대해서  (0) 2023.11.10
[React] 캐싱 기법이란?  (0) 2023.11.10
[React] useCallback 에 대해서 공부  (0) 2023.11.10

+ Recent posts