March 9, 2024 • ☕️ 5 min read
“React Query is in fact NOT a data fetching library.”
An Async State Manager
QueryClientProvider
에 있기만 한다면)A data synchronization tool
Before React Query
→ 두 가지 모두 최적화가 되어있지 않다
Stale While Revalidate
Smart refetches
useQuery
를 호출하는 것은 너무 비싼 작업. 리액트 쿼리는 보다 똑똑하게 동작한다
refetchOnMount
refetchOnWindowFocus
refeetchOnReconnect
queryClient.invalidateQueries
Letting React Query do its magic
staleTime
의 기본값은 0이므로, 새로운 컴포넌트가 마운트될 때마다 background refetch된다. 그러면 같은 렌더 사이클에 있지 않아 넘 많은 fetch가 발생할 텐데…?Customize staleTime
Bonus: using setQueryDefaults
QueryClient.setQueryDefaults로 query key에 기본값을 설정할 수 있다
// 🚀 everything todo-related will have
// a 1 minute staleTime
queryClient.setQueryDefaults(
todoKeys.all,
{ staleTime: 1000 * 60 }
)
A note on separation of concerns
useContext
, useQuery
, useSelector
등의 등장으로 ui와 데이터 페칭의 분리가 가능해짐Ref React Query as a State Manager
bin
은 뭘까?실행할 수 있는 패키지를 만들기 위해서는 package.json에 bin
항목을 제공해야 한다. 패키지 설치 시에, npm은 bin
항목에 기술된 파일의 심볼릭 링크를 global install한 경우 prefix/bin
에, local install한 경우 ./node_modules/.bin/
에 생서하게 된다
ex) myapp이 아래와 같이 bin
항목이 지정되어 있다면
"bin": { "myapp": "./cli.js" }
myapp을 설치할 때, cli.js 파일에 대한 심볼릭 링크가 /usr/local/bin/myapp
에 만들어진다
만약 하나의 실행 파일만 가지고 있다면, 실행 파일의 이름은 패키지의 이름과 같게 되고, 그렇지 않다면 아래와 같이 각각의 실행 파일의 이름을 bin
항목에 지정해주어야 한다.
"name": "my-program",
"version": "1.2.5",
"bin": {
"my-program": "./path/to/program",
}
Ref
Ref <https://developer.mozilla.org/ko/docs/Web/API/Web_components/Using_custom_elements#생명_주기_콜백_사용하기
없음
크롬 Web Vital에서 3월 12일부터 FID(First Input Delay)를 대체하게 될 INP(Interaction to Next Paint) 메트릭에 대한 소개글.
페이지 수명 동안 페이지와의 모든 클릭, 탭, 키보드 상호작용의 지연 시간을 관찰 후 이상점을 무시하고 가장 긴 기간이 측정된다고 한다.
근데 FID와 다른 의미 아닌가? …싶었는데 그에 대한 해명(?)도 있다.
최초 입력 반응 시간 (FID)은 프로그램의 반응성 측면을 나타내지만, 시간이 지남에 따라 FID가 아닌 웹에서의 상호작용 측면을 캡처하려면 새로운 측정항목이 필요하다는 사실이 분명해졌습니다.
아무튼, INP라니 MBTI 유형 같다.
Ref https://web.dev/articles/inp?hl=ko
대체 혼자 자면 잠을 못 이루는 바보탱 🤷♀️
취미생활 하나 홀딩했다고 갑자기 생겨버린 무한한 시간에 무한한(?) 여유를 즐기고 있당. 좋구만