റിയാക്ടിന്റെ കൺകറന്റ് മോഡും, ശക്തവും ഉപയോക്തൃ-സൗഹൃദവുമായ ആപ്ലിക്കേഷനുകൾ നിർമ്മിക്കുന്നതിനുള്ള എറർ ഹാൻഡ്ലിംഗ് രീതികളും മനസ്സിലാക്കുക. പിശകുകൾ ഭംഗിയായി കൈകാര്യം ചെയ്യുന്നതിനും തടസ്സമില്ലാത്ത ഉപയോക്തൃ അനുഭവം ഉറപ്പാക്കുന്നതിനുമുള്ള പ്രായോഗിക വിദ്യകൾ പഠിക്കുക.
റിയാക്ട് കൺകറന്റ് എറർ ഹാൻഡ്ലിംഗ്: ഉറപ്പുള്ള യൂസർ ഇന്റർഫേസുകൾ നിർമ്മിക്കാം
റിയാക്ടിന്റെ കൺകറന്റ് മോഡ്, പ്രതികരണശേഷിയുള്ളതും ഇന്ററാക്ടീവുമായ യൂസർ ഇന്റർഫേസുകൾ നിർമ്മിക്കുന്നതിന് പുതിയ സാധ്യതകൾ തുറക്കുന്നു. എന്നിരുന്നാലും, വലിയ ശക്തിയോടൊപ്പം വലിയ ഉത്തരവാദിത്തവും വരുന്നു. കൺകറന്റ് മോഡിന്റെ അടിസ്ഥാന ശിലകളായ അസിൻക്രണസ് പ്രവർത്തനങ്ങളും ഡാറ്റാ ഫെച്ചിംഗും, ഉപയോക്തൃ അനുഭവത്തെ തടസ്സപ്പെടുത്താൻ സാധ്യതയുള്ള പരാജയങ്ങൾക്ക് കാരണമായേക്കാം. ഈ ലേഖനം റിയാക്ടിന്റെ കൺകറന്റ് പരിതസ്ഥിതിയിൽ ശക്തമായ എറർ ഹാൻഡ്ലിംഗ് തന്ത്രങ്ങളെക്കുറിച്ച് വിശദമായി പ്രതിപാദിക്കുന്നു, അപ്രതീക്ഷിതമായ പ്രശ്നങ്ങൾ ഉണ്ടാകുമ്പോൾ പോലും നിങ്ങളുടെ ആപ്ലിക്കേഷനുകൾ കാര്യക്ഷമമായും ഉപയോക്തൃ-സൗഹൃദമായും നിലനിൽക്കുന്നുവെന്ന് ഉറപ്പാക്കുന്നു.
കൺകറന്റ് മോഡും എറർ ഹാൻഡ്ലിംഗിൽ അതിന്റെ സ്വാധീനവും മനസ്സിലാക്കൽ
പരമ്പരാഗത റിയാക്ട് ആപ്ലിക്കേഷനുകൾ സിൻക്രണസ് ആയാണ് പ്രവർത്തിക്കുന്നത്, അതായത് ഓരോ അപ്ഡേറ്റും പൂർത്തിയാകുന്നതുവരെ പ്രധാന ത്രെഡിനെ ബ്ലോക്ക് ചെയ്യുന്നു. കൺകറന്റ് മോഡ്, മറുവശത്ത്, ഉപയോക്തൃ ഇടപെടലുകൾക്ക് മുൻഗണന നൽകുന്നതിനും പ്രതികരണശേഷി നിലനിർത്തുന്നതിനും വേണ്ടി അപ്ഡേറ്റുകളെ തടസ്സപ്പെടുത്താനോ, താൽക്കാലികമായി നിർത്താനോ, അല്ലെങ്കിൽ ഉപേക്ഷിക്കാനോ റിയാക്ടിനെ അനുവദിക്കുന്നു. ടൈം സ്ലൈസിംഗ്, സസ്പെൻസ് തുടങ്ങിയ സാങ്കേതിക വിദ്യകളിലൂടെയാണ് ഇത് സാധ്യമാക്കുന്നത്.
എന്നിരുന്നാലും, ഈ അസിൻക്രണസ് സ്വഭാവം പുതിയ പിശകുകൾക്ക് കാരണമാകുന്നു. കമ്പോണന്റുകൾ ഇപ്പോഴും ലഭ്യമാകാത്ത ഡാറ്റ റെൻഡർ ചെയ്യാൻ ശ്രമിച്ചേക്കാം, അല്ലെങ്കിൽ അസിൻക്രണസ് പ്രവർത്തനങ്ങൾ അപ്രതീക്ഷിതമായി പരാജയപ്പെട്ടേക്കാം. ശരിയായ എറർ ഹാൻഡ്ലിംഗ് ഇല്ലെങ്കിൽ, ഈ പ്രശ്നങ്ങൾ തകർന്ന യുഐകളിലേക്കും നിരാശാജനകമായ ഉപയോക്തൃ അനുഭവത്തിലേക്കും നയിച്ചേക്കാം.
റിയാക്ട് കമ്പോണന്റുകളിലെ പരമ്പരാഗത Try/Catch ബ്ലോക്കുകളുടെ പരിമിതികൾ
ജാവാസ്ക്രിപ്റ്റിൽ എറർ ഹാൻഡ്ലിംഗിന് try/catch
ബ്ലോക്കുകൾ അടിസ്ഥാനപരമാണെങ്കിലും, റിയാക്ട് കമ്പോണന്റുകളിൽ, പ്രത്യേകിച്ച് റെൻഡറിംഗിന്റെ കാര്യത്തിൽ, അവയ്ക്ക് പരിമിതികളുണ്ട്. ഒരു കമ്പോണന്റിന്റെ render()
മെത്തേഡിൽ നേരിട്ട് സ്ഥാപിക്കുന്ന ഒരു try/catch
ബ്ലോക്ക്, റെൻഡറിംഗിനിടെ സംഭവിക്കുന്ന പിശകുകളെ പിടികൂടുകയില്ല. കാരണം റിയാക്ടിന്റെ റെൻഡറിംഗ് പ്രക്രിയ നടക്കുന്നത് try/catch
ബ്ലോക്കിന്റെ എക്സിക്യൂഷൻ കോൺടെക്സ്റ്റിന്റെ പരിധിക്ക് പുറത്താണ്.
ഈ ഉദാഹരണം പരിഗണിക്കുക (ഇത് പ്രതീക്ഷിച്ചപോലെ പ്രവർത്തിക്കില്ല):
function MyComponent() {
try {
// `data` നിർവചിച്ചിട്ടില്ലെങ്കിലോ null ആണെങ്കിലോ ഇത് ഒരു പിശക് നൽകും
const value = data.property;
return {value};
} catch (error) {
console.error("Error during rendering:", error);
return Error occurred!;
}
}
ഈ കമ്പോണന്റ് റെൻഡർ ചെയ്യുമ്പോൾ `data` നിർവചിച്ചിട്ടില്ലെങ്കിൽ, `data.property` ആക്സസ് ഒരു പിശക് നൽകും. എന്നിരുന്നാലും, try/catch
ബ്ലോക്ക് ഈ പിശക് പിടികൂടുകയില്ല. പിശക് റിയാക്ട് കമ്പോണന്റ് ട്രീയിലൂടെ മുകളിലേക്ക് വ്യാപിക്കുകയും, ആപ്ലിക്കേഷൻ മുഴുവനായി ക്രാഷ് ആകാൻ സാധ്യതയുണ്ടാക്കുകയും ചെയ്യും.
എറർ ബൗണ്ടറികൾ പരിചയപ്പെടുത്തുന്നു: റിയാക്ടിന്റെ ഇൻ-ബിൽറ്റ് എറർ ഹാൻഡ്ലിംഗ് സംവിധാനം
റെൻഡറിംഗ്, ലൈഫ് സൈക്കിൾ മെത്തേഡുകൾ, അതിന്റെ ചൈൽഡ് കമ്പോണന്റുകളുടെ കൺസ്ട്രക്റ്ററുകൾ എന്നിവയ്ക്കിടയിലുള്ള പിശകുകൾ കൈകാര്യം ചെയ്യുന്നതിനായി റിയാക്ട്, എറർ ബൗണ്ടറി എന്നൊരു പ്രത്യേക കമ്പോണന്റ് നൽകുന്നു. എറർ ബൗണ്ടറികൾ ഒരു സുരക്ഷാ വലയായി പ്രവർത്തിക്കുന്നു, പിശകുകൾ മുഴുവൻ ആപ്ലിക്കേഷനെയും ക്രാഷ് ചെയ്യുന്നതിൽ നിന്ന് തടയുകയും ഒരു മികച്ച ഫാൾബാക്ക് യുഐ നൽകുകയും ചെയ്യുന്നു.
എറർ ബൗണ്ടറികൾ എങ്ങനെ പ്രവർത്തിക്കുന്നു
എറർ ബൗണ്ടറികൾ എന്നത് താഴെ പറയുന്ന ഒന്നോ അല്ലെങ്കിൽ രണ്ടുമോ ലൈഫ് സൈക്കിൾ മെത്തേഡുകൾ നടപ്പിലാക്കുന്ന റിയാക്ട് ക്ലാസ് കമ്പോണന്റുകളാണ്:
static getDerivedStateFromError(error)
: ഒരു ഡിസൻഡന്റ് കമ്പോണന്റ് പിശക് നൽകുമ്പോൾ ഈ ലൈഫ് സൈക്കിൾ മെത്തേഡ് പ്രവർത്തനക്ഷമമാകും. ഇത് പിശക് ഒരു ആർഗ്യുമെന്റായി സ്വീകരിക്കുകയും ഒരു പിശക് സംഭവിച്ചുവെന്ന് സൂചിപ്പിക്കുന്നതിന് സ്റ്റേറ്റ് അപ്ഡേറ്റ് ചെയ്യാൻ നിങ്ങളെ അനുവദിക്കുകയും ചെയ്യുന്നു.componentDidCatch(error, info)
: ഒരു ഡിസൻഡന്റ് കമ്പോണന്റ് പിശക് നൽകുമ്പോൾ ഈ ലൈഫ് സൈക്കിൾ മെത്തേഡ് പ്രവർത്തനക്ഷമമാകും. ഇത് പിശകും, പിശക് സംഭവിച്ച കമ്പോണന്റ് സ്റ്റാക്കിനെക്കുറിച്ചുള്ള വിവരങ്ങൾ അടങ്ങിയ ഒരു `info` ഒബ്ജക്റ്റും സ്വീകരിക്കുന്നു. പിശകുകൾ ലോഗ് ചെയ്യുന്നതിനോ അല്ലെങ്കിൽ ഒരു എറർ ട്രാക്കിംഗ് സേവനത്തിലേക്ക് (ഉദാഹരണത്തിന്, Sentry, Rollbar, അല്ലെങ്കിൽ Bugsnag) പിശക് റിപ്പോർട്ട് ചെയ്യുന്നത് പോലുള്ള സൈഡ് എഫക്റ്റുകൾ ചെയ്യുന്നതിനോ ഈ മെത്തേഡ് അനുയോജ്യമാണ്.
ഒരു ലളിതമായ എറർ ബൗണ്ടറി ഉണ്ടാക്കുന്നു
ഒരു എറർ ബൗണ്ടറി കമ്പോണന്റിന്റെ അടിസ്ഥാന ഉദാഹരണം ഇതാ:
class ErrorBoundary extends React.Component {
constructor(props) {
super(props);
this.state = { hasError: false };
}
static getDerivedStateFromError(error) {
// സ്റ്റേറ്റ് അപ്ഡേറ്റ് ചെയ്യുക, അതുവഴി അടുത്ത റെൻഡർ ഫാൾബാക്ക് യുഐ കാണിക്കും.
return { hasError: true };
}
componentDidCatch(error, info) {
// ഉദാഹരണം "componentStack":
// in ComponentThatThrows (created by App)
// in MyErrorBoundary (created by App)
// in div (created by App)
// in App
console.error("ErrorBoundary caught an error:", error, info.componentStack);
// നിങ്ങൾക്ക് പിശക് ഒരു എറർ റിപ്പോർട്ടിംഗ് സേവനത്തിലേക്ക് ലോഗ് ചെയ്യാനും കഴിയും
// logErrorToMyService(error, info.componentStack);
}
render() {
if (this.state.hasError) {
// നിങ്ങൾക്ക് ഇഷ്ടമുള്ള ഫാൾബാക്ക് യുഐ റെൻഡർ ചെയ്യാം
return Something went wrong.
;
}
return this.props.children;
}
}
എറർ ബൗണ്ടറി ഉപയോഗിക്കുന്നത്
എറർ ബൗണ്ടറി ഉപയോഗിക്കുന്നതിന്, പിശക് ഉണ്ടാക്കാൻ സാധ്യതയുള്ള ഏതൊരു കമ്പോണന്റിനെയും അതിൽ പൊതിഞ്ഞാൽ മതി:
function MyComponentThatMightError() {
// ഈ കമ്പോണന്റ് റെൻഡറിംഗിനിടെ ഒരു പിശക് ഉണ്ടാക്കാൻ സാധ്യതയുണ്ട്
if (Math.random() < 0.5) {
throw new Error("Component failed!");
}
return Everything is fine!;
}
function App() {
return (
);
}
MyComponentThatMightError
ഒരു പിശക് നൽകുകയാണെങ്കിൽ, എറർ ബൗണ്ടറി അത് പിടിച്ചെടുക്കുകയും, അതിന്റെ സ്റ്റേറ്റ് അപ്ഡേറ്റ് ചെയ്യുകയും, ഫാൾബാക്ക് യുഐ ("Something went wrong.") റെൻഡർ ചെയ്യുകയും ചെയ്യും. ആപ്ലിക്കേഷന്റെ ബാക്കി ഭാഗങ്ങൾ സാധാരണപോലെ പ്രവർത്തിക്കുന്നത് തുടരും.
എറർ ബൗണ്ടറികൾക്കുള്ള പ്രധാന പരിഗണനകൾ
- ഗ്രാന്യൂലാരിറ്റി: എറർ ബൗണ്ടറികൾ തന്ത്രപരമായി സ്ഥാപിക്കുക. മുഴുവൻ ആപ്ലിക്കേഷനെയും ഒരൊറ്റ എറർ ബൗണ്ടറിയിൽ പൊതിയുന്നത് എളുപ്പമായി തോന്നാമെങ്കിലും, പിശകുകൾ വേർതിരിക്കുന്നതിനും കൂടുതൽ വ്യക്തമായ ഫാൾബാക്ക് യുഐകൾ നൽകുന്നതിനും ഒന്നിലധികം എറർ ബൗണ്ടറികൾ ഉപയോഗിക്കുന്നതാണ് നല്ലത്. ഉദാഹരണത്തിന്, നിങ്ങളുടെ ആപ്ലിക്കേഷന്റെ ഉപയോക്തൃ പ്രൊഫൈൽ വിഭാഗം അല്ലെങ്കിൽ ഒരു ഡാറ്റാ വിഷ്വലൈസേഷൻ കമ്പോണന്റ് പോലുള്ള വ്യത്യസ്ത ഭാഗങ്ങൾക്കായി നിങ്ങൾക്ക് പ്രത്യേക എറർ ബൗണ്ടറികൾ ഉപയോഗിക്കാം.
- എറർ ലോഗിംഗ്: ഒരു റിമോട്ട് സേവനത്തിലേക്ക് പിശകുകൾ ലോഗ് ചെയ്യുന്നതിന്
componentDidCatch
നടപ്പിലാക്കുക. ഇത് പ്രൊഡക്ഷനിലെ പിശകുകൾ ട്രാക്ക് ചെയ്യാനും നിങ്ങളുടെ ആപ്ലിക്കേഷന്റെ ശ്രദ്ധ ആവശ്യമുള്ള ഭാഗങ്ങൾ തിരിച്ചറിയാനും നിങ്ങളെ അനുവദിക്കുന്നു. Sentry, Rollbar, Bugsnag പോലുള്ള സേവനങ്ങൾ എറർ ട്രാക്കിംഗിനും റിപ്പോർട്ടിംഗിനുമുള്ള ടൂളുകൾ നൽകുന്നു. - ഫാൾബാക്ക് യുഐ: വിവരദായകവും ഉപയോക്തൃ-സൗഹൃദവുമായ ഫാൾബാക്ക് യുഐകൾ രൂപകൽപ്പന ചെയ്യുക. ഒരു സാധാരണ പിശക് സന്ദേശം കാണിക്കുന്നതിനുപകരം, ഉപയോക്താവിന് സന്ദർഭവും മാർഗ്ഗനിർദ്ദേശവും നൽകുക. ഉദാഹരണത്തിന്, പേജ് റീഫ്രഷ് ചെയ്യാനോ, സപ്പോർട്ടുമായി ബന്ധപ്പെടാനോ, അല്ലെങ്കിൽ മറ്റൊരു പ്രവർത്തനം പരീക്ഷിക്കാനോ നിങ്ങൾക്ക് നിർദ്ദേശിക്കാം.
- എറർ റിക്കവറി: എറർ റിക്കവറി സംവിധാനങ്ങൾ നടപ്പിലാക്കുന്നത് പരിഗണിക്കുക. ഉദാഹരണത്തിന്, പരാജയപ്പെട്ട പ്രവർത്തനം വീണ്ടും ശ്രമിക്കാൻ ഉപയോക്താവിനെ അനുവദിക്കുന്ന ഒരു ബട്ടൺ നിങ്ങൾക്ക് നൽകാം. എന്നിരുന്നാലും, വീണ്ടും ശ്രമിക്കുന്ന ലോജിക്കിൽ ഉചിതമായ സുരക്ഷാ സംവിധാനങ്ങൾ ഉൾപ്പെടുത്തിയിട്ടുണ്ടെന്ന് ഉറപ്പുവരുത്തി അനന്തമായ ലൂപ്പുകൾ ഒഴിവാക്കാൻ ശ്രദ്ധിക്കുക.
- എറർ ബൗണ്ടറികൾ അവയുടെ *താഴെ* ട്രീയിലുള്ള കമ്പോണന്റുകളിലെ പിശകുകൾ മാത്രമേ പിടികൂടുകയുള്ളൂ. ഒരു എറർ ബൗണ്ടറിക്ക് അതിനുള്ളിലെ പിശകുകൾ പിടികൂടാൻ കഴിയില്ല. ഒരു എറർ ബൗണ്ടറി പിശക് സന്ദേശം റെൻഡർ ചെയ്യാൻ ശ്രമിക്കുമ്പോൾ പരാജയപ്പെട്ടാൽ, പിശക് അതിന്റെ മുകളിലുള്ള ഏറ്റവും അടുത്തുള്ള എറർ ബൗണ്ടറിയിലേക്ക് വ്യാപിക്കും.
സസ്പെൻസും എറർ ബൗണ്ടറികളും ഉപയോഗിച്ച് അസിൻക്രണസ് ഓപ്പറേഷനുകളിലെ പിശകുകൾ കൈകാര്യം ചെയ്യൽ
റിയാക്ടിന്റെ സസ്പെൻസ് കമ്പോണന്റ് ഡാറ്റാ ഫെച്ചിംഗ് പോലുള്ള അസിൻക്രണസ് പ്രവർത്തനങ്ങൾ കൈകാര്യം ചെയ്യാൻ ഒരു ഡിക്ലറേറ്റീവ് മാർഗ്ഗം നൽകുന്നു. ഒരു കമ്പോണന്റ് ഡാറ്റയ്ക്കായി കാത്തിരിക്കുന്നതിനാൽ "സസ്പെൻഡ്" ചെയ്യുമ്പോൾ (റെൻഡറിംഗ് താൽക്കാലികമായി നിർത്തുമ്പോൾ), സസ്പെൻസ് ഒരു ഫാൾബാക്ക് യുഐ കാണിക്കുന്നു. ഈ അസിൻക്രണസ് പ്രവർത്തനങ്ങളിൽ സംഭവിക്കുന്ന പിശകുകൾ കൈകാര്യം ചെയ്യാൻ എറർ ബൗണ്ടറികളെ സസ്പെൻസുമായി സംയോജിപ്പിക്കാൻ കഴിയും.
ഡാറ്റാ ഫെച്ചിംഗിനായി സസ്പെൻസ് ഉപയോഗിക്കുന്നത്
സസ്പെൻസ് ഉപയോഗിക്കുന്നതിന്, അതിനെ പിന്തുണയ്ക്കുന്ന ഒരു ഡാറ്റാ ഫെച്ചിംഗ് ലൈബ്രറി നിങ്ങൾക്ക് ആവശ്യമാണ്. `react-query`, `swr` പോലുള്ള ലൈബ്രറികൾക്കും, `fetch`-നെ സസ്പെൻസ്-അനുയോജ്യമായ ഒരു ഇന്റർഫേസ് ഉപയോഗിച്ച് പൊതിയുന്ന ചില കസ്റ്റം സൊല്യൂഷനുകൾക്കും ഇത് നേടാൻ കഴിയും.
ഒരു പ്രോമിസ് നൽകുന്നതും സസ്പെൻസുമായി പൊരുത്തപ്പെടുന്നതുമായ ഒരു സാങ്കൽപ്പിക `fetchData` ഫംഗ്ഷൻ ഉപയോഗിക്കുന്ന ഒരു ലളിതമായ ഉദാഹരണം ഇതാ:
import React, { Suspense } from 'react';
// സസ്പെൻസിനെ പിന്തുണയ്ക്കുന്ന ഒരു സാങ്കൽപ്പിക fetchData ഫംഗ്ഷൻ
const fetchData = (url) => {
// ... (ഡാറ്റ ഇതുവരെ ലഭ്യമല്ലാത്തപ്പോൾ ഒരു പ്രോമിസ് നൽകുന്ന ഇമ്പ്ലിമെൻറേഷൻ)
};
const Resource = {
data: fetchData('/api/data')
};
function MyComponent() {
const data = Resource.data.read(); // ഡാറ്റ തയ്യാറായിട്ടില്ലെങ്കിൽ ഒരു പ്രോമിസ് നൽകുന്നു
return {data.value};
}
function App() {
return (
Loading...
ഈ ഉദാഹരണത്തിൽ:
fetchData
ഒരു API എൻഡ്പോയിന്റിൽ നിന്ന് ഡാറ്റ ലഭ്യമാക്കുന്ന ഒരു ഫംഗ്ഷനാണ്. ഡാറ്റ ഇതുവരെ ലഭ്യമല്ലാത്തപ്പോൾ ഒരു പ്രോമിസ് നൽകുന്ന രീതിയിലാണ് ഇത് രൂപകൽപ്പന ചെയ്തിരിക്കുന്നത്. സസ്പെൻസ് ശരിയായി പ്രവർത്തിക്കുന്നതിനുള്ള പ്രധാന കാര്യം ഇതാണ്.Resource.data.read()
ഡാറ്റ വായിക്കാൻ ശ്രമിക്കുന്നു. ഡാറ്റ ഇതുവരെ ലഭ്യമല്ലെങ്കിൽ (പ്രോമിസ് റിസോൾവ് ചെയ്തിട്ടില്ലെങ്കിൽ), ഇത് പ്രോമിസ് നൽകുന്നു, ഇത് കമ്പോണന്റ് സസ്പെൻഡ് ചെയ്യാൻ കാരണമാകുന്നു.Suspense
ഡാറ്റ ലഭ്യമാക്കുമ്പോൾfallback
യുഐ (Loading...) കാണിക്കുന്നു.ErrorBoundary
,MyComponent
-ന്റെ റെൻഡറിംഗിനിടയിലോ ഡാറ്റാ ഫെച്ചിംഗ് പ്രക്രിയയിലോ സംഭവിക്കുന്ന ഏതൊരു പിശകുകളും പിടിക്കുന്നു. API കോൾ പരാജയപ്പെട്ടാൽ, എറർ ബൗണ്ടറി പിശക് പിടികൂടുകയും അതിന്റെ ഫാൾബാക്ക് യുഐ കാണിക്കുകയും ചെയ്യും.
എറർ ബൗണ്ടറികൾ ഉപയോഗിച്ച് സസ്പെൻസിനുള്ളിലെ പിശകുകൾ കൈകാര്യം ചെയ്യൽ
സസ്പെൻസ് ഉപയോഗിച്ച് ശക്തമായ എറർ ഹാൻഡ്ലിംഗ് ചെയ്യുന്നതിനുള്ള പ്രധാന മാർഗ്ഗം, Suspense
കമ്പോണന്റിനെ ഒരു ErrorBoundary
ഉപയോഗിച്ച് പൊതിയുക എന്നതാണ്. Suspense
ബൗണ്ടറിക്കുള്ളിലെ ഡാറ്റാ ഫെച്ചിംഗ് അല്ലെങ്കിൽ കമ്പോണന്റ് റെൻഡറിംഗ് സമയത്ത് സംഭവിക്കുന്ന ഏതൊരു പിശകുകളും പിടികൂടുകയും ഭംഗിയായി കൈകാര്യം ചെയ്യുകയും ചെയ്യുന്നുവെന്ന് ഇത് ഉറപ്പാക്കുന്നു.
fetchData
ഫംഗ്ഷൻ പരാജയപ്പെടുകയോ MyComponent
ഒരു പിശക് നൽകുകയോ ചെയ്താൽ, എറർ ബൗണ്ടറി പിശക് പിടികൂടുകയും അതിന്റെ ഫാൾബാക്ക് യുഐ കാണിക്കുകയും ചെയ്യും. ഇത് മുഴുവൻ ആപ്ലിക്കേഷനെയും ക്രാഷ് ചെയ്യുന്നതിൽ നിന്ന് തടയുകയും കൂടുതൽ ഉപയോക്തൃ-സൗഹൃദപരമായ അനുഭവം നൽകുകയും ചെയ്യുന്നു.
വ്യത്യസ്ത കൺകറന്റ് മോഡ് സാഹചര്യങ്ങൾക്കുള്ള പ്രത്യേക എറർ ഹാൻഡ്ലിംഗ് തന്ത്രങ്ങൾ
സാധാരണ കൺകറന്റ് മോഡ് സാഹചര്യങ്ങൾക്കുള്ള ചില പ്രത്യേക എറർ ഹാൻഡ്ലിംഗ് തന്ത്രങ്ങൾ താഴെ നൽകുന്നു:
1. React.lazy കമ്പോണന്റുകളിലെ പിശകുകൾ കൈകാര്യം ചെയ്യൽ
React.lazy
നിങ്ങളുടെ ആപ്ലിക്കേഷന്റെ പ്രാരംഭ ബണ്ടിൽ വലുപ്പം കുറച്ചുകൊണ്ട് കമ്പോണന്റുകളെ ഡൈനാമിക് ആയി ഇമ്പോർട്ട് ചെയ്യാൻ നിങ്ങളെ അനുവദിക്കുന്നു. എന്നിരുന്നാലും, നെറ്റ്വർക്ക് ലഭ്യമല്ലാത്തതിനാലോ സെർവർ പ്രവർത്തനരഹിതമായതിനാലോ ഡൈനാമിക് ഇമ്പോർട്ട് പ്രവർത്തനം പരാജയപ്പെടാം.
React.lazy
ഉപയോഗിക്കുമ്പോൾ പിശകുകൾ കൈകാര്യം ചെയ്യുന്നതിന്, ലേസി-ലോഡഡ് കമ്പോണന്റിനെ ഒരു Suspense
കമ്പോണന്റും ഒരു ErrorBoundary
-യും ഉപയോഗിച്ച് പൊതിയുക:
import React, { Suspense, lazy } from 'react';
const MyLazyComponent = lazy(() => import('./MyComponent'));
function App() {
return (
Loading component...