반응형
snowman95
코딩수련장
snowman95
전체 방문자
오늘
어제
  • 분류 전체보기 (230)
    • 앱테크 (3)
    • 옵시디언 (5)
    • 드라마, 영화 (1)
    • 개발자 이야기 (24)
    • 프로젝트 (10)
      • 프로젝트 방법론 (7)
      • 프로젝트 기록 (2)
      • Github (1)
    • 개발 지식 (0)
      • 디자인 패턴 (0)
    • 프론트엔드 개발 (5)
      • 테크트리 (2)
      • React.js (19)
      • ReactNative (2)
      • Next.js (6)
      • GraphQL (6)
      • 패키지 매니저 (2)
      • 라이브러리 (3)
      • 상태관리 라이브러리 (4)
      • Web 지식 (3)
      • HTML CSS (26)
      • Javascript (16)
      • 도구 (Tool) (3)
      • 성능 최적화 (1)
      • 디자인시스템 (0)
    • Python (53)
      • 모음집 (1)
      • 문법 (12)
      • 라이브러리 (15)
      • 알고리즘 (10)
      • 백준 문제풀이 (9)
      • 코딩테스트 (2)
      • 도구 (Tool) (3)
    • C++ (20)
      • 알고리즘 (6)
      • 삼성SW기출 (6)
      • 삼성 A형 (6)
    • 데이터사이언스 (1)
    • 인프라 (9)
      • 하드웨어 지식 (4)
      • Ansible (2)
      • Database (2)
      • 쉘스크립트 (1)
    • 주식 (0)
    • 취업 준비 (4)
      • 취업 이야기 (0)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • 전공 요약 #네트워크
  • 면접
  • 개발자이직
  • 전공 요약 #데이터베이스
  • 언어
  • 25년도채용시장
  • C++
  • 나의 해방일지
  • 오블완
  • 알고리즘
  • Next.js #graphql #tailwind.css
  • 개발자취업시장
  • 백준
  • 전공요약
  • 티스토리챌린지
  • 삼성SW역량테스트
  • 기계식키보드 #nuphy
  • A형
  • 삼성SDS
  • 개발자이직회고

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
snowman95

코딩수련장

React RTK Query 캐시
프론트엔드 개발/상태관리 라이브러리

React RTK Query 캐시

2022. 1. 27. 01:07
728x90
반응형

캐시 태그 시스템

여러 컴포넌트에서 Query Endpoint를 구독하여 Request하는 경우

  • 동일한 요청이 여러 번 있을 때 한 번만 서버에 Request한 뒤 캐시 데이터를 돌려씀
  • 컴포넌트1 : fetchData() → 서버로 데이터 Request 컴포넌트2 : fetchData() → 캐시 데이터 사용 컴포넌트3 : fetchData() → 캐시 데이터 사용
  • 다른 Query여도 캐시 Tag값이 같다면 같은 데이터를 사용하는 것임
  • postData1(), providesTags=["Tag1"] postData2(), providesTags=["Tag1"]
  • 무효화를 통해 캐시 데이터를 자동 refetch 받아오거나 제거할 수 있음
    // 이 부분은 좀더 공부가 필요함!!
  • postData1(), invalidatesTags=[{ type: 'Post', id: 'List' }]

옵션

tagTypes = [ "태그명1", "태그명2"  ] // 사용되는 태그명을 나열
providesTags: (result, error, id) => [{ type: "Review", id }], // 반환된 캐시 데이터에 태그 등록
invalidatesTags: ["태그명1", "태그명2"] // 무효화 시킬 태그명을 나열 → 변경됨을 알려주어서 새 데이터를 다시 받아올 수 있게 함

여러가지 형태로 쓸 수 있다. 보통은 6번 형태로 많이 쓰는듯 하다.

1.['Post'] - equivalent to 2
2.[{ type: 'Post' }] - equivalent to 1
3.[{ type: 'Post', id: 1 }]
4.(result, error, arg) => ['Post'] - equivalent to 5
5.(result, error, arg) => [{ type: 'Post' }] - equivalent to 4
6.(result, error, arg) => [{ type: 'Post', id: 1 }]

캐시 유지시간

  • 캐시는 구독자 참조수가 0이된 후 60초(default) 간 유지된다.
  • keepUnusedDataFor 값을 통해 이 조절 가능하다.
  • 글로벌하게 설정할 수도 있고, 앤드포인트 별로 도 줄 수 있다.
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'

export const api = createApi({
  baseQuery: fetchBaseQuery({ baseUrl: '/' }),
  // global configuration for the api
  keepUnusedDataFor: 30,
  endpoints: (builder) => ({
    getPosts: builder.query({
      query: () => `posts`,
      // configuration for an individual endpoint, overriding the api setting
      keepUnusedDataFor: 5,
    }),
  }),
})

캐시 무시하고 강제로 Refetch

  • initiate의 옵션 forceRefetch:true 설정
const dispatch = useDispatch();
const { data, refetch } = useGetPostsQuery({ count: 5 });

dispatch(
    api.endpoints.getPosts.initiate(
    { count: 5 },
    { subscribe: false, forceRefetch: true }
  )
)
반응형
저작자표시 비영리 동일조건 (새창열림)

'프론트엔드 개발 > 상태관리 라이브러리' 카테고리의 다른 글

redux persist : 새로 고침 시에도 상태 유지  (0) 2022.01.29
React Redux Tookit 사용 방법  (0) 2022.01.25
React Redux (리액트 리덕스)  (0) 2021.11.18
    '프론트엔드 개발/상태관리 라이브러리' 카테고리의 다른 글
    • redux persist : 새로 고침 시에도 상태 유지
    • React Redux Tookit 사용 방법
    • React Redux (리액트 리덕스)
    snowman95
    snowman95
    (17~19) Unity/Unreal Engine 게임 프로그래머 (20~21) System Administrator ___________ (22~) React 웹 프론트앤드 개발자 __________ 깃헙 : https://github.com/snowman95

    티스토리툴바