रिएक्ट रूटर में रूट के लिए डेटा लोडर

पिछले पाठ में, हमने उत्पादों का डेटा स्टोरेज से निकाला। अब इस डेटा को रूट एलिमेंट में लोड करने की आवश्यकता है। इसके लिए लोडर (loader) फंक्शन का उपयोग किया जाता है। अब हम इसे बनाएंगे।

root.jsx खोलें, यहाँ getProducts का इम्पोर्ट forStorage.js से जोड़ें:

routes/root.jsximport { getProducts } from '../forStorage'

इम्पोर्ट लाइनों के तुरंत बाद और फंक्शन Root से पहले, loader फंक्शन लिखें, जो getProducts के माध्यम से हमें स्टोरेज से उत्पादों का डेटा वापस करेगा। वैसे ऐसे फंक्शन अलग फाइल में लिखने चाहिए, लेकिन हम थोड़ा आलस करेंगे, इसलिए चेतावनी पर ध्यान न दें:

routes/root.jsxexport async function loader() {
  const products = await getProducts();
  return { products };
}

अब अपने लोडर को main.jsx में इम्पोर्ट करें। यह लोडर हमारे रूट के लिए होगा, इसलिए इसे rootLoader नाम दें:

main.jsximport Root, { loader as rootLoader } from './routes/root';

और इसे अपने रूट ऑब्जेक्ट में loader प्रॉपर्टी में जोड़ें:

main.jsxconst router = createBrowserRouter([
  {
    path: '/',
    element: <Root />,
    errorElement: <ErrorPage404 />,
    loader: rootLoader,
    children: [
      {
        path: 'products/:productId',
        element: <Product />,
      },
    ],
  },
]);
Задание 1

पिछले पाठों के असाइनमेंट में आपके द्वारा बनाए गए एप्लिकेशन को लें। पाठ की सामग्री का उपयोग करके, root.jsx फाइल में छात्रों का डेटा लोड करने के लिए loader फंक्शन लिखें और इसे main.jsx में रूट ऑब्जेक्ट में जोड़ें।