डेटा कैशिंग के लिए SWR और React Query
सर्वर डेटा को प्राप्त करने, कैश करने, डुप्लिकेट अनुरोधों को हटाने और फिर से मान्य करने के लिए SWR या TanStack Query का उपयोग करें, और मैन्युअल useEffect प्राप्ति-पैटर्न को बदलें।
डेटा कैशिंग के लिए SWR और React Query, CoddyKit पर Frontend Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Frontend Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Frontend Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
सर्वर स्थिति अलग होती है
नेटवर्क डेटा केवल सामान्य स्थिति नहीं होता। इसके लिए कैशिंग, डुप्लिकेट अनुरोधों को रोकना, बैकग्राउंड रीफ़्रेश, लोडिंग और त्रुटि की निगरानी तथा पुनः प्रयास आवश्यक होते हैं। मैन्युअल useEffect + useState डेटा-प्राप्ति पैटर्न इन सुविधाओं को खराब ढंग से दोबारा लागू करते हैं।
SWR बनाम TanStack Query
SWR (Vercel): छोटा, सरल और केवल हुक-आधारित। TanStack Query (पहले React Query): बड़ा और अधिक सुविधाओं वाला (म्यूटेशन, अनंत सूची, पहले से डेटा लाना, विकास उपकरण)। दोनों उत्कृष्ट हैं।
SWR — मूल उपयोग
useSWR(key, fetcher) डेटा, त्रुटि और लोडिंग स्थिति लौटाता है। यह key के आधार पर कैश किया जाता है और सभी कॉम्पोनेंट्स में डुप्लिकेट अनुरोधों को रोकता है।
import useSWR from 'swr';
const fetcher = (url) => fetch(url).then(r => r.json());
function Profile() {
const { data, error, isLoading } = useSWR('/api/me', fetcher);
if (error) return <ErrorMessage error={error} />;
if (isLoading) return <Spinner />;
return <h1>{data.name}</h1>;
}SWR — पुनः सत्यापन का व्यवहार
डिफ़ॉल्ट रूप से SWR फ़ोकस होने पर (टैब पर फिर से फ़ोकस आने पर) और पुनः कनेक्ट होने पर पुनः सत्यापन करता है। यह कैश किया गया मान तुरंत ('पुराना') लौटाता है और बैकग्राउंड में उसे अपडेट करता है ('पुनः सत्यापन के दौरान')।
SWR — म्यूटेशन
mutate(key) कैश की गई क्वेरी का फिर से सत्यापन करता है। आशावादी अपडेट करने के लिए दूसरे आर्ग्युमेंट के रूप में नया डेटा दें।
import useSWR, { mutate } from 'swr';
async function updateProfile(updates) {
// Optimistic update — UI reflects change immediately
mutate('/api/me', { ...currentData, ...updates }, false);
await fetch('/api/me', { method: 'PUT', body: JSON.stringify(updates) });
// Revalidate to get the server's canonical state
mutate('/api/me');
}TanStack Query — सेटअप
अपने ऐप को कॉन्फ़िगर किए गए QueryClient वाले QueryClientProvider में लपेटें।
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
const client = new QueryClient({
defaultOptions: {
queries: { staleTime: 30000, retry: 2 }
}
});
function App() {
return (
<QueryClientProvider client={client}>
<Routes />
</QueryClientProvider>
);
}useQuery
useQuery({ queryKey, queryFn }) डेटा प्राप्त करके उसे कैश करता है।
import { useQuery } from '@tanstack/react-query';
function UserList() {
const { data, isLoading, error } = useQuery({
queryKey: ['users'],
queryFn: () => fetch('/api/users').then(r => r.json()),
staleTime: 60_000 // fresh for 1 minute
});
if (isLoading) return <Spinner />;
if (error) return <ErrorMessage error={error} />;
return <ul>{data.map(u => <li key={u.id}>{u.name}</li>)}</ul>;
}लेखन के लिए useMutation
useMutation POST/PUT/DELETE को अंतर्निहित लंबित और त्रुटि स्थिति तथा कैश अमान्य करने वाले onSuccess हुक के साथ संभालता है।
import { useMutation, useQueryClient } from '@tanstack/react-query';
function CreateUserForm() {
const qc = useQueryClient();
const m = useMutation({
mutationFn: (user) => fetch('/api/users', { method: 'POST', body: JSON.stringify(user) }),
onSuccess: () => qc.invalidateQueries({ queryKey: ['users'] })
});
return <button onClick={() => m.mutate({ name: 'Alice' })} disabled={m.isPending}>Create</button>;
}क्वेरी अमान्य करना
म्यूटेशन के बाद फिर से डेटा प्राप्त करने के लिए संबंधित क्वेरी अमान्य करें। queryClient.invalidateQueries({ queryKey: ['users'] }) उन्हें पुराना चिह्नित करता है और यदि वे माउंटेड हों तो फिर से डेटा प्राप्त करता है।
आशावादी अपडेट
TanStack Query में onMutate, onError और onSettled के माध्यम से आशावादी अपडेट के लिए पहली श्रेणी का समर्थन है।
useMutation({
mutationFn: updateUser,
onMutate: async (newUser) => {
await qc.cancelQueries({ queryKey: ['user', newUser.id] });
const previous = qc.getQueryData(['user', newUser.id]);
qc.setQueryData(['user', newUser.id], newUser);
return { previous };
},
onError: (_, newUser, ctx) => {
qc.setQueryData(['user', newUser.id], ctx.previous); // rollback
},
onSettled: (_, __, newUser) => {
qc.invalidateQueries({ queryKey: ['user', newUser.id] });
}
});अनंत क्वेरी
useInfiniteQuery पृष्ठांकित या अनंत स्क्रॉल वाली सूचियों को संभालता है—यह fetchNextPage उपलब्ध कराता है और लोड किए गए सभी पृष्ठों का रिकॉर्ड रखता है।
React Query के विकास उपकरण
सभी कैश की गई क्वेरी, उनकी स्थिति दिखाने वाला और आपको उन्हें मैन्युअल रूप से अमान्य करने देने वाला फ़्लोटिंग पैनल जोड़ने के लिए @tanstack/react-query-devtools जोड़ें।
त्वरित जाँच
मैन्युअल useEffect + fetch की तुलना में SWR या TanStack Query का उपयोग करने का मुख्य लाभ क्या है?
पुनरावलोकन: SWR और React Query
सर्वर स्थिति के लिए कैशिंग, डुप्लिकेट अनुरोधों को रोकना और पुनः सत्यापन आवश्यक हैं। SWR: छोटा और सरल। TanStack Query: अधिक सुविधाएँ (म्यूटेशन, अनंत सूची, विकास उपकरण)। पढ़ने के लिए useQuery और लिखने के लिए useMutation का उपयोग करें। म्यूटेशन के बाद invalidateQueries करें। onMutate/onError के साथ आशावादी अपडेट करें। प्रोडक्शन ऐप्स में दोनों मैन्युअल useEffect+fetch की आवश्यकता समाप्त कर देते हैं।
एआई शिक्षक के साथ HTML सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 41
- पाठ
- 163
अक्सर पूछे जाने वाले प्रश्न
क्या “डेटा कैशिंग के लिए SWR और React Query” पाठ निःशुल्क है?
हाँ—“डेटा कैशिंग के लिए SWR और React Query” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Frontend Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Frontend Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“डेटा कैशिंग के लिए SWR और React Query” में मैं क्या सीखूँगा?
सर्वर डेटा को प्राप्त करने, कैश करने, डुप्लिकेट अनुरोधों को हटाने और फिर से मान्य करने के लिए SWR या TanStack Query का उपयोग करें, और मैन्युअल useEffect प्राप्ति-पैटर्न को बदलें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Frontend Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Frontend Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Frontend Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।
“डेटा कैशिंग के लिए SWR और React Query” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Frontend Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Frontend Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Fetch API: GET, POST, PUT, DELETE
- Axios: Interceptors और Base URL
- त्रुटि प्रबंधन: HTTP स्थिति कोड
- डेटा कैशिंग के लिए SWR और React Query