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
- designpatterns
- go
- JPA
- Redux
- RTK
- ReactHooks
- frontend
- backend
- storybook
- tanstackquery
- Gin
- React
- 웹애플리케이션서버
- 티스토리챌린지
- Chakra
- component
- satisfiles
- hook
- golang
- javascript
- react-hook-form
- typescript
- css
- 오블완
- Spring
- springboot
- test
- JavaSpring
- java
Archives
- Today
- Total
bkdragon's log
[React Query] Mutation 이후 캐시 데이터 직접 변경하기 본문
일반적으로 Mutation 사용 이후 데이터가 변화했을 가능성이 높아서 데이터를 refetch 했었다. 당연하게도 이는 요청이 계속 발생하는 것임으로 성능에 좋지 않다. 직접 캐시된 데이터를 수정하는 방법을 알아냈다.
공식문서의 내용을 해석해보았다.(=> 이후가 나의 해석이다.)
서버에서 객체를 업데이트하는 변형을 처리할 때, 일반적으로 변형의 응답으로 새 객체가 자동으로 반환되는 것이 일반적입니다.
⇒ 데이터를 추가하는 mutation을 발생시키면 일반적으로 성공 응답으로 추가된 데이터 객체가 반환된다.
해당 항목에 대한 쿼리를 다시 가져오고 이미 가지고 있는 데이터에 대한 네트워크 호출을 낭비하는대신,
⇒ mutation 이후 refetch를 통해 불필요한 통신을 발생 시키는 대신
쿼리 클라이언트의 setQueryData 메서드를 사용하여 mutation 함수가 반환한 객체를 활용하고 기존 쿼리를 새 데이터로 즉시 업데이트할 수 있다.
⇒ 응답 성공 객체를 setQueryData 메서드로 바로 업데이트 해주자.
setQueryData
queryClient.setQueryData(
Querykey,
(oldData) => oldData ? {
...oldData,
title: 'my new post title'
} : oldData
)
Querykey와 update 역할을 하는 콜백을 인자로 받는다. 콜백의 첫번째 인자로 기존 데이터를 불러 올 수 있고 불변성을 지켜서 수정하면 된다.
'React' 카테고리의 다른 글
[React] 성능 최적화 (0) | 2023.06.29 |
---|---|
[React] Virtual DOM (0) | 2023.06.25 |
[React-hook-form] register, handleSubmit 살짝 파헤치기 (0) | 2023.06.12 |
커링과 HOC (0) | 2023.05.31 |
[React-Query] 캐싱, 헷갈리는 부분 (0) | 2023.05.26 |