250x250
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 |
Tags
- 파이썬 replace
- JavaScript
- 타입스크립트 리액트
- useState
- typeScript
- 리액트 공식문서
- 코딩테스트
- 내일배움캠프 최종 프로젝트
- REACT
- 내일배움캠프
- 파이썬 slice
- 파이썬 enumerate
- 파이썬 for in
- 파이썬 반복문
- 프로그래머스
- 리액트
- 자바스크립트
- React Hooks
- 리액트 프로젝트
- 타입스크립트 props
- 리액트 훅
- 내배캠 프로젝트
- 한글 공부 사이트
- tanstack query
- 파이썬 딕셔너리
- Next 팀 프로젝트
- 타입스크립트
- useEffect
- 파이썬 for
- 내일배움캠프 프로젝트
Archives
- Today
- Total
sohyeon kim
[Next] React Query 본문
728x90
💡 Next.js 에서 리액트 쿼리 사용하기!
리액트에서와 별반 다르지 않다! 우선 프로젝트를 만든 후에 ~
yarn add @tanstack/react-query
app/provider.tsx 생성
'use client'; // ** 필수! 클라이언트 컴포넌트에서만 사용 가능하다!
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
const QueryProvider = ({ children }: React.PropsWithChildren) => {
const queryClient = new QueryClient();
return (
<QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
);
};
export default QueryProvider;
🚨 layout 에 바로 안 만들고 provider 로 분리한 이유는..
RootLayout 은 클라이언트 컴포넌트로 쓸 수 없어서! (그 외 컴포넌트는 모두 가능)
layout.tsx
import QueryProvider from './provider';
//...
return (
// ...
<QueryProvider> <!-- children 을 감싸준다 -->
<div className="flex justify-center text-center bg-indigo-50">
{children}
</div>
</QueryProvider>
// ...
);
}
todos-csr/page.tsx
function TodosPage() {
const queryClient = useQueryClient();
// ...
const newTodoMudation = useMutation({
mutationFn: async (newTodo: newTodo) => {
const response = await fetch('http://localhost:3000/api', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(newTodo),
});
const todo = await response.json();
return todo;
},
});
const onSubmitHandler = (e: FormEvent) => {
e.preventDefault();
newTodoMudation.mutate(
{ title, contents },
{
onSuccess: () => {
setTitle('');
setContents('');
queryClient.invalidateQueries({
queryKey: ['todos'],
});
},
}
);
};
// ...
728x90
반응형
'Next' 카테고리의 다른 글
[React/Next] 리액트 confetti 폭죽 효과 : react-canvas-confetti 🎉 (1) | 2024.04.26 |
---|---|
[React/Next] 폰트 최적화 : getaddrinfo enotfound fonts.gstatic.com , 웹폰트 깨짐 🥵 (1) | 2024.04.25 |
[Next] Image hostname Error (1) | 2024.03.15 |
[Next] Next.js 시작하기 : CSR, SSR, SSG, ISR 렌더링 기법, 코드 스플리팅 (1) | 2024.03.12 |