சஸ்பென்ஸைப் பயன்படுத்தி React பயன்பாடுகளில் ஏற்றுதல் நிலைகளை திறம்பட நிர்வகித்து ஒருங்கிணைப்பது எப்படி என்பதை அறியுங்கள், பல கூறு தரவு பெறுதல் மற்றும் பிழை கையாளுதல் மூலம் பயனர் அனுபவத்தை மேம்படுத்துங்கள்.
React சஸ்பென்ஸ் ஒருங்கிணைப்பு: பல கூறு ஏற்றுதல் நிலைகளில் தேர்ச்சி பெறுதல்
React சஸ்பென்ஸ் என்பது React 16.6-ல் அறிமுகப்படுத்தப்பட்ட ஒரு சக்திவாய்ந்த அம்சமாகும், இது ஒரு ப்ராமிஸ் (promise) தீர்க்கப்படும் வரை ஒரு கூறின் ரெண்டரிங்கை "சஸ்பெண்ட்" செய்ய உங்களை அனுமதிக்கிறது. தரவு பெறுதல், கோட் ஸ்ப்ளிட்டிங் மற்றும் படங்களை ஏற்றுதல் போன்ற ஒத்திசைவற்ற செயல்பாடுகளைக் கையாள்வதற்கு இது மிகவும் பயனுள்ளதாக இருக்கும், இது ஏற்றுதல் நிலைகளை நிர்வகிக்கவும் பயனர் அனுபவத்தை மேம்படுத்தவும் ஒரு டிக்ளரேடிவ் வழியை வழங்குகிறது.
இருப்பினும், வெவ்வேறு ஒத்திசைவற்ற தரவு மூலங்களைச் சார்ந்திருக்கும் பல கூறுகளுடன் கையாளும்போது ஏற்றுதல் நிலைகளை நிர்வகிப்பது மிகவும் சிக்கலானதாகிறது. இந்தக் கட்டுரை பல கூறுகளுக்கு இடையில் சஸ்பென்ஸை ஒருங்கிணைப்பதற்கான நுட்பங்களை ஆராய்கிறது, இது உங்கள் பயனர்களுக்கு மென்மையான மற்றும் சீரான ஏற்றுதல் அனுபவத்தை உறுதி செய்கிறது.
React சஸ்பென்ஸைப் புரிந்துகொள்வது
ஒருங்கிணைப்பு நுட்பங்களுக்குள் நுழைவதற்கு முன், React சஸ்பென்ஸின் அடிப்படைகளை மீண்டும் பார்ப்போம். இதன் முக்கிய கருத்து, "சஸ்பெண்ட்" செய்யக்கூடிய ஒரு கூறை <Suspense> எல்லைக்குள் வைப்பதைச் சுற்றியுள்ளது. இந்த எல்லை ஒரு ஃபால்பேக் UI-ஐ (பொதுவாக ஒரு ஏற்றுதல் இண்டிகேட்டர்) குறிப்பிடுகிறது, இது சஸ்பெண்ட் செய்யப்பட்ட கூறு அதன் தரவுக்காகக் காத்திருக்கும்போது காட்டப்படும்.
இதோ ஒரு அடிப்படை உதாரணம்:
import React, { Suspense } from 'react';
// Simulated asynchronous data fetching
const fetchData = () => {
return new Promise(resolve => {
setTimeout(() => {
resolve({ data: 'Fetched data!' });
}, 2000);
});
};
const Resource = {
read() {
if (!this.promise) {
this.promise = fetchData().then(data => {
this.data = data;
return data; // Ensure the promise resolves with the data
});
}
if (this.data) {
return this.data;
} else if (this.promise) {
throw this.promise; // Suspend!
} else {
throw new Error('Unexpected state'); // Should not happen
}
}
};
const MyComponent = () => {
const data = Resource.read();
return <p>{data.data}</p>;
};
const App = () => {
return (
<Suspense fallback=<p>Loading...</p>>
<MyComponent />
</Suspense>
);
};
export default App;
இந்த எடுத்துக்காட்டில், MyComponent ஆனது Resource.read() ஐ அழைக்கிறது, இது தரவு பெறுதலை உருவகப்படுத்துகிறது. தரவு இன்னும் கிடைக்கவில்லை என்றால் (அதாவது, ப்ராமிஸ் தீர்க்கப்படவில்லை), அது ப்ராமிஸை த்ரோ (throw) செய்கிறது, இது React-ஐ MyComponent-இன் ரெண்டரிங்கை சஸ்பெண்ட் செய்து, <Suspense> கூறில் வரையறுக்கப்பட்ட ஃபால்பேக் UI-ஐக் காட்ட வைக்கிறது.
பல கூறு ஏற்றுதலின் சவால்
ஒவ்வொன்றும் அதன் சொந்த தரவைப் பெறும் பல கூறுகளை நீங்கள் கொண்டிருக்கும்போது உண்மையான சிக்கல் எழுகிறது, அவை ஒன்றாகக் காட்டப்பட வேண்டும். ஒவ்வொரு கூறை அதன் சொந்த <Suspense> எல்லைக்குள் வைப்பது, பல ஏற்றுதல் இண்டிகேட்டர்கள் தோன்றி மறைந்து, பயனருக்கு ஒரு சீரற்ற அனுபவத்தை அளிக்கும்.
பயனர் சுயவிவரங்கள், சமீபத்திய செயல்பாடுகள் மற்றும் கணினி புள்ளிவிவரங்களைக் காட்டும் ஒரு டாஷ்போர்டு பயன்பாட்டைக் கவனியுங்கள். இந்த கூறுகளில் ஒவ்வொன்றும் வெவ்வேறு API-களிலிருந்து தரவைப் பெறலாம். ஒவ்வொரு கூறின் தரவு வரும்போதும் தனித்தனி ஏற்றுதல் இண்டிகேட்டரைக் காண்பிப்பது தொடர்பற்றதாகவும், தொழில்முறையற்றதாகவும் உணரப்படலாம்.
சஸ்பென்ஸை ஒருங்கிணைப்பதற்கான உத்திகள்
மேலும் ஒருங்கிணைந்த ஏற்றுதல் அனுபவத்தை உருவாக்க சஸ்பென்ஸை ஒருங்கிணைப்பதற்கான பல உத்திகள் இங்கே:
1. மையப்படுத்தப்பட்ட சஸ்பென்ஸ் எல்லை
கூறுகளைக் கொண்டிருக்கும் முழுப் பகுதியையும் ஒரே <Suspense> எல்லைக்குள் வைப்பது எளிமையான அணுகுமுறையாகும். இது அந்த எல்லைக்குள் உள்ள அனைத்து கூறுகளும் முழுமையாக ஏற்றப்பட்டிருப்பதை அல்லது ஃபால்பேக் UI ஒரே நேரத்தில் அவற்றுக்குக் காட்டப்படுவதை உறுதி செய்கிறது.
import React, { Suspense } from 'react';
// Assume MyComponentA and MyComponentB both use resources that suspend
import MyComponentA from './MyComponentA';
import MyComponentB from './MyComponentB';
const Dashboard = () => {
return (
<Suspense fallback=<p>Loading Dashboard...</p>>
<div>
<MyComponentA />
<MyComponentB />
</div>
</Suspense>
);
};
export default Dashboard;
நன்மைகள்:
- செயல்படுத்துவது எளிது.
- ஒருங்கிணைந்த ஏற்றுதல் அனுபவத்தை வழங்குகிறது.
குறைகள்:
- எதுவும் காட்டப்படுவதற்கு முன்பு அனைத்து கூறுகளும் ஏற்றப்பட வேண்டும், இது ஆரம்ப ஏற்றுதல் நேரத்தை அதிகரிக்கக்கூடும்.
- ஒரு கூறு ஏற்றுவதற்கு மிக அதிக நேரம் எடுத்துக் கொண்டால், முழுப் பகுதியும் ஏற்றுதல் நிலையில் இருக்கும்.
2. முன்னுரிமையுடன் கூடிய கிரானுலர் சஸ்பென்ஸ்
இந்த அணுகுமுறை பல <Suspense> எல்லைகளைப் பயன்படுத்துவதை உள்ளடக்கியது, ஆனால் ஆரம்ப பயனர் அனுபவத்திற்கு எந்த கூறுகள் அவசியம் என்பதற்கு முன்னுரிமை அளிக்கிறது. அத்தியாவசியமற்ற கூறுகளை அவற்றின் சொந்த <Suspense> எல்லைக்குள் நீங்கள் வைக்கலாம், இது மிகவும் முக்கியமான கூறுகள் முதலில் ஏற்றப்பட்டு காட்ட அனுமதிக்கிறது.
உதாரணமாக, ஒரு தயாரிப்புப் பக்கத்தில், தயாரிப்பின் பெயர் மற்றும் விலையைக் காட்டுவதற்கு நீங்கள் முன்னுரிமை அளிக்கலாம், அதே நேரத்தில் வாடிக்கையாளர் மதிப்புரைகள் போன்ற குறைவான முக்கிய விவரங்கள் பின்னர் ஏற்றப்படலாம்.
import React, { Suspense } from 'react';
// Assume ProductDetails and CustomerReviews both use resources that suspend
import ProductDetails from './ProductDetails';
import CustomerReviews from './CustomerReviews';
const ProductPage = () => {
return (
<div>
<Suspense fallback=<p>Loading Product Details...</p>>
<ProductDetails />
</Suspense>
<Suspense fallback=<p>Loading Customer Reviews...</p>>
<CustomerReviews />
</Suspense>
</div>
);
};
export default ProductPage;
நன்மைகள்:
- மேலும் படிப்படியான ஏற்றுதல் அனுபவத்தை அனுமதிக்கிறது.
- முக்கியமான உள்ளடக்கத்தை விரைவாகக் காண்பிப்பதன் மூலம் உணரப்பட்ட செயல்திறனை மேம்படுத்துகிறது.
குறைகள்:
- எந்த கூறுகள் மிக முக்கியமானவை என்பதைக் கவனமாகக் கருத்தில் கொள்ள வேண்டும்.
- ஒருங்கிணைக்கப்படாத அணுகுமுறையை விட குறைவான எரிச்சலூட்டும் என்றாலும், பல ஏற்றுதல் இண்டிகேட்டர்களுக்கு இது வழிவகுக்கும்.
3. ஒரு பகிரப்பட்ட ஏற்றுதல் நிலையைப் பயன்படுத்துதல்
சஸ்பென்ஸ் ஃபால்பேக்குகளை மட்டும் நம்பியிருப்பதற்குப் பதிலாக, நீங்கள் ஒரு உயர் மட்டத்தில் (எ.கா., React Context அல்லது Redux அல்லது Zustand போன்ற நிலை மேலாண்மை நூலகத்தைப் பயன்படுத்தி) ஒரு பகிரப்பட்ட ஏற்றுதல் நிலையை நிர்வகிக்கலாம் மற்றும் அந்த நிலையின் அடிப்படையில் கூறுகளை நிபந்தனையுடன் ரெண்டர் செய்யலாம்.
இந்த அணுகுமுறை ஏற்றுதல் அனுபவத்தின் மீது உங்களுக்கு அதிக கட்டுப்பாட்டைக் கொடுக்கிறது மற்றும் ஒட்டுமொத்த முன்னேற்றத்தைப் பிரதிபலிக்கும் ஒரு தனிப்பயன் ஏற்றுதல் UI-ஐக் காட்ட உங்களை அனுமதிக்கிறது.
import React, { createContext, useContext, useState, useEffect } from 'react';
const LoadingContext = createContext();
const useLoading = () => useContext(LoadingContext);
const LoadingProvider = ({ children }) => {
const [isLoadingA, setIsLoadingA] = useState(true);
const [isLoadingB, setIsLoadingB] = useState(true);
useEffect(() => {
// Simulate data fetching for Component A
setTimeout(() => {
setIsLoadingA(false);
}, 1500);
// Simulate data fetching for Component B
setTimeout(() => {
setIsLoadingB(false);
}, 2500);
}, []);
const isLoading = isLoadingA || isLoadingB;
return (
<LoadingContext.Provider value={{ isLoadingA, isLoadingB, isLoading }}>
{children}
</LoadingContext.Provider>
);
};
const MyComponentA = () => {
const { isLoadingA } = useLoading();
if (isLoadingA) {
return <p>Loading Component A...</p>;
}
return <p>Data from Component A</p>;
};
const MyComponentB = () => {
const { isLoadingB } = useLoading();
if (isLoadingB) {
return <p>Loading Component B...</p>;
}
return <p>Data from Component B</p>;
};
const App = () => {
const { isLoading } = useLoading();
return (
<LoadingProvider>
<div>
{isLoading ? (<p>Loading Application...</p>) : (
<>
<MyComponentA />
<MyComponentB />
<>
)}
</div>
</LoadingProvider>
);
};
export default App;
நன்மைகள்:
- ஏற்றுதல் அனுபவத்தின் மீது நுணுக்கமான கட்டுப்பாட்டை வழங்குகிறது.
- தனிப்பயன் ஏற்றுதல் இண்டிகேட்டர்கள் மற்றும் முன்னேற்ற புதுப்பிப்புகளை அனுமதிக்கிறது.
குறைகள்:
- அதிக கோட் மற்றும் சிக்கலான தன்மை தேவை.
- பராமரிப்பது மிகவும் சவாலானதாக இருக்கும்.
4. சஸ்பென்ஸை எர்ரர் பவுண்டரிகளுடன் இணைத்தல்
தரவு பெறும் போது ஏற்படக்கூடிய பிழைகளைக் கையாள்வது மிகவும் முக்கியம். React எர்ரர் பவுண்டரிகள் ரெண்டரிங்கின் போது ஏற்படும் பிழைகளை நேர்த்தியாகப் பிடிக்கவும் மற்றும் ஒரு ஃபால்பேக் UI-ஐக் காட்டவும் உங்களை அனுமதிக்கின்றன. சஸ்பென்ஸை எர்ரர் பவுண்டரிகளுடன் இணைப்பது, விஷயங்கள் தவறாகப் போகும்போது கூட, ஒரு வலுவான மற்றும் பயனர் நட்பு அனுபவத்தை உறுதி செய்கிறது.
import React, { Suspense } from 'react';
class ErrorBoundary extends React.Component {
constructor(props) {
super(props);
this.state = { hasError: false };
}
static getDerivedStateFromError(error) {
// Update state so the next render will show the fallback UI.
return { hasError: true };
}
componentDidCatch(error, errorInfo) {
// You can also log the error to an error reporting service
console.error(error, errorInfo);
}
render() {
if (this.state.hasError) {
// You can render any custom fallback UI
return <h1>Something went wrong.</h1>;
}
return this.props.children;
}
}
// Assume MyComponent can throw an error during rendering (e.g., due to failed data fetching)
import MyComponent from './MyComponent';
const App = () => {
return (
<ErrorBoundary>
<Suspense fallback=<p>Loading...</p>>
<MyComponent />
</Suspense>
</ErrorBoundary>
);
};
export default App;
இந்த எடுத்துக்காட்டில், ErrorBoundary கூறு Suspense எல்லையைச் சுற்றி உள்ளது. MyComponent-க்குள் ஒரு பிழை ஏற்பட்டால் (ஆரம்ப ரெண்டரின் போது அல்லது தரவு பெறுதலால் தூண்டப்பட்ட அடுத்தடுத்த புதுப்பிப்பின் போது), ErrorBoundary பிழையைப் பிடித்து ஒரு ஃபால்பேக் UI-ஐக் காட்டும்.
சிறந்த நடைமுறை: உங்கள் கூறு மரத்தின் வெவ்வேறு நிலைகளில் பிழைகளைப் பிடிக்க எர்ரர் பவுண்டரிகளை உத்தி ரீதியாக வைக்கவும், உங்கள் பயன்பாட்டின் ஒவ்வொரு பகுதிக்கும் ஏற்றவாறு ஒரு பிழை கையாளுதல் அனுபவத்தை வழங்கவும்.
5. கோட் ஸ்ப்ளிட்டிங்கிற்கு React.lazy பயன்படுத்துதல்
React.lazy கூறுகளை டைனமிக்காக இறக்குமதி செய்ய உங்களை அனுமதிக்கிறது, உங்கள் கோடை தேவைக்கேற்ப ஏற்றப்படும் சிறிய துண்டுகளாகப் பிரிக்கிறது. இது உங்கள் பயன்பாட்டின் ஆரம்ப ஏற்றுதல் நேரத்தை கணிசமாக மேம்படுத்தும், குறிப்பாக பெரிய மற்றும் சிக்கலான பயன்பாடுகளுக்கு.
<Suspense> உடன் இணைந்து பயன்படுத்தும்போது, React.lazy இந்த கோட் துண்டுகளின் ஏற்றுதலைக் கையாள ஒரு தடையற்ற வழியை வழங்குகிறது.
import React, { Suspense, lazy } from 'react';
const MyComponent = lazy(() => import('./MyComponent')); // Dynamically import MyComponent
const App = () => {
return (
<Suspense fallback=<p>Loading component...</p>>
<MyComponent />
</Suspense>
);
};
export default App;
இந்த எடுத்துக்காட்டில், MyComponent ஆனது React.lazy ஐப் பயன்படுத்தி டைனமிக்காக இறக்குமதி செய்யப்படுகிறது. MyComponent முதல் முறையாக ரெண்டர் செய்யப்படும்போது, React அதனுடன் தொடர்புடைய கோட் துண்டுகளை ஏற்றும். கோட் ஏற்றப்படும்போது, <Suspense> கூறில் குறிப்பிடப்பட்டுள்ள ஃபால்பேக் UI காட்டப்படும்.
பல்வேறு பயன்பாடுகளில் நடைமுறை எடுத்துக்காட்டுகள்
இந்த உத்திகள் வெவ்வேறு நிஜ உலக சூழ்நிலைகளில் எவ்வாறு பயன்படுத்தப்படலாம் என்பதை ஆராய்வோம்:
இ-காமர்ஸ் இணையதளம்
ஒரு தயாரிப்பு விவரங்கள் பக்கத்தில், நீங்கள் முன்னுரிமையுடன் கூடிய கிரானுலர் சஸ்பென்ஸைப் பயன்படுத்தலாம். தயாரிப்புப் படம், தலைப்பு மற்றும் விலையை ஒரு முதன்மை <Suspense> எல்லைக்குள் காட்டி, வாடிக்கையாளர் மதிப்புரைகள், தொடர்புடைய தயாரிப்புகள் மற்றும் ஷிப்பிங் தகவல்களை தனித்தனியான, குறைந்த முன்னுரிமை கொண்ட <Suspense> எல்லைகளில் ஏற்றலாம். இது பயனர்கள் அத்தியாவசிய தயாரிப்பு தகவல்களை விரைவாகப் பார்க்க அனுமதிக்கிறது, அதே நேரத்தில் குறைவான முக்கிய விவரங்கள் பின்னணியில் ஏற்றப்படுகின்றன.
சமூக ஊடக ஃபீட்
ஒரு சமூக ஊடக ஃபீடில், நீங்கள் மையப்படுத்தப்பட்ட மற்றும் கிரானுலர் சஸ்பென்ஸின் கலவையைப் பயன்படுத்தலாம். ஆரம்பகட்ட பதிவுகள் பெறப்படும்போது ஒரு பொதுவான ஏற்றுதல் இண்டிகேட்டரைக் காட்ட முழு ஃபீடையும் ஒரு <Suspense> எல்லைக்குள் வைக்கவும். பின்னர், படங்கள், வீடியோக்கள் மற்றும் கருத்துகளின் ஏற்றுதலைக் கையாள ஒவ்வொரு பதிவிற்கும் தனிப்பட்ட <Suspense> எல்லைகளைப் பயன்படுத்தவும். இது தனிப்பட்ட பதிவுகள் முழு ஃபீடையும் தடுக்காமல் சுயாதீனமாக ஏற்றப்படுவதால் ஒரு மென்மையான ஏற்றுதல் அனுபவத்தை உருவாக்குகிறது.
தரவு காட்சிப்படுத்தல் டாஷ்போர்டு
ஒரு தரவு காட்சிப்படுத்தல் டாஷ்போர்டுக்கு, ஒரு பகிரப்பட்ட ஏற்றுதல் நிலையைப் பயன்படுத்துவதைக் கருத்தில் கொள்ளுங்கள். இது முன்னேற்றப் புதுப்பிப்புகளுடன் கூடிய ஒரு தனிப்பயன் ஏற்றுதல் UI-ஐக் காட்ட உங்களை அனுமதிக்கிறது, இது பயனர்களுக்கு ஒட்டுமொத்த ஏற்றுதல் முன்னேற்றம் பற்றிய தெளிவான அறிகுறியை வழங்குகிறது. தரவு பெறும் போது ஏற்படக்கூடிய பிழைகளைக் கையாள நீங்கள் எர்ரர் பவுண்டரிகளையும் பயன்படுத்தலாம், முழு டாஷ்போர்டையும் செயலிழக்கச் செய்வதற்குப் பதிலாக தகவல் தரும் பிழைச் செய்திகளைக் காட்டலாம்.
சிறந்த நடைமுறைகள் மற்றும் கருத்தில் கொள்ள வேண்டியவை
- தரவு பெறுதலை மேம்படுத்துங்கள்: உங்கள் தரவு பெறுதல் திறமையாக இருக்கும்போது சஸ்பென்ஸ் சிறப்பாகச் செயல்படுகிறது. நெட்வொர்க் கோரிக்கைகளின் எண்ணிக்கையைக் குறைக்கவும் செயல்திறனை மேம்படுத்தவும் மெமோயிசேஷன், கேச்சிங் மற்றும் கோரிக்கை பேட்சிங் போன்ற நுட்பங்களைப் பயன்படுத்தவும்.
- சரியான ஃபால்பேக் UI-ஐத் தேர்வு செய்யவும்: ஃபால்பேக் UI பார்வைக்கு ஈர்க்கக்கூடியதாகவும் தகவல் தருவதாகவும் இருக்க வேண்டும். பொதுவான ஏற்றுதல் ஸ்பின்னர்களைப் பயன்படுத்துவதைத் தவிர்த்து, என்ன ஏற்றப்படுகிறது என்பது பற்றிய சூழல் சார்ந்த தகவல்களை வழங்கவும்.
- பயனர் பார்வையை கருத்தில் கொள்ளுங்கள்: சஸ்பென்ஸ் இருந்தாலும், நீண்ட ஏற்றுதல் நேரங்கள் பயனர் அனுபவத்தை எதிர்மறையாகப் பாதிக்கும். ஏற்றுதல் நேரங்களைக் குறைக்கவும், மென்மையான மற்றும் பதிலளிக்கக்கூடிய பயனர் இடைமுகத்தை உறுதிப்படுத்தவும் உங்கள் பயன்பாட்டின் செயல்திறனை மேம்படுத்துங்கள்.
- முழுமையாக சோதிக்கவும்: உங்கள் சஸ்பென்ஸ் செயலாக்கத்தை வெவ்வேறு நெட்வொர்க் நிலைமைகள் மற்றும் தரவுத் தொகுப்புகளுடன் சோதித்து, அது ஏற்றுதல் நிலைகள் மற்றும் பிழைகளை நேர்த்தியாகக் கையாளுகிறதா என்பதை உறுதிப்படுத்தவும்.
- டிபவுன்ஸ் அல்லது த்ராட்டில்: ஒரு கூறின் தரவு பெறுதல் அடிக்கடி மறு-ரெண்டர்களைத் தூண்டினால், கோரிக்கைகளின் எண்ணிக்கையைக் கட்டுப்படுத்தவும் செயல்திறனை மேம்படுத்தவும் டிபவுன்சிங் அல்லது த்ராட்லிங்கைப் பயன்படுத்தவும்.
முடிவுரை
React சஸ்பென்ஸ் உங்கள் பயன்பாடுகளில் ஏற்றுதல் நிலைகளை நிர்வகிக்க ஒரு சக்திவாய்ந்த மற்றும் டிக்ளரேடிவ் வழியை வழங்குகிறது. பல கூறுகளுக்கு இடையில் சஸ்பென்ஸை ஒருங்கிணைப்பதற்கான நுட்பங்களில் தேர்ச்சி பெறுவதன் மூலம், நீங்கள் மேலும் ஒருங்கிணைந்த, ஈடுபாடுள்ள மற்றும் பயனர் நட்பு அனுபவத்தை உருவாக்கலாம். இந்தக் கட்டுரையில் கோடிட்டுக் காட்டப்பட்டுள்ள வெவ்வேறு உத்திகளுடன் பரிசோதனை செய்து, உங்கள் குறிப்பிட்ட தேவைகள் மற்றும் பயன்பாட்டுத் தேவைகளுக்கு மிகவும் பொருத்தமான அணுகுமுறையைத் தேர்வு செய்யவும். பயனர் அனுபவத்திற்கு முன்னுரிமை அளிக்கவும், தரவு பெறுதலை மேம்படுத்தவும், வலுவான மற்றும் செயல்திறன் மிக்க React பயன்பாடுகளை உருவாக்க பிழைகளை நேர்த்தியாகக் கையாளவும் நினைவில் கொள்ளுங்கள்.
React சஸ்பென்ஸின் சக்தியைத் தழுவி, உலகெங்கிலும் உள்ள உங்கள் பயனர்களை மகிழ்விக்கும் பதிலளிக்கக்கூடிய மற்றும் ஈடுபாடுள்ள பயனர் இடைமுகங்களை உருவாக்குவதற்கான புதிய சாத்தியங்களைத் திறக்கவும்.