TypeScript를 공부해야 하지만 넘어가기 전에
배웠던 내용을 다시 복습하고 넘어가야 할 것 같다.
그 중 아직도 생소한 개념인 Tanstack Query
yarn add @tanstack/react-query
npm install @tanstack/react-query
import React from 'react';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
const queryClient = new QueryClient();
const App = () => (
<QueryClientProvider client={queryClient}>
<Todos />
</QueryClientProvider>
);
export default App;
import axios from 'axios';
export const getTodos = async () => {
const { data } = await axios.get('/api/todos');
return data;
};
export const postTodo = async (newTodo) => {
const { data } = await axios.post('/api/todos', newTodo);
return data;
};
import { useQuery } from '@tanstack/react-query';
// Access the client
const queryClient = useQueryClient()
function Todos() {
// Access the client
const queryClient = useQueryClient()
// Queries
const query = useQuery({ queryKey: ['todos'], queryFn: getTodos })
// Mutations
const mutation = useMutation({
mutationFn: postTodo,
onSuccess: () => {
// Invalidate and refetch
queryClient.invalidateQueries({ queryKey: ['todos'] })
},
})
return (
<div>
<ul>{query.data?.map((todo) => <li key={todo.id}>{todo.title}</li>)}</ul>
<button
onClick={() => {
mutation.mutate({
id: Date.now(),
title: 'Do Laundry',
})
}}
>
Add Todo
</button>
</div>
)
}
Tanstack Query는 서버에서 데이터를 가져오고 이를 관리하는 데 필요한 다양한 기능을 제공
주요 기능으로는 데이터 페칭, 캐싱, 백그라운드 데이터 동기화, 오류 처리
Tanstack Query를 사용하여 서버 데이터를 효율적으로 관리하고, 데이터 변이를 통해 상태를 업데이트
참고 자료
오늘까지만 덥고 내일부터 비가 많이 오겠지..?