मैं कहूंगा कि आपके प्रारंभिक विचारों में से कोई भी पूरी तस्वीर को कैप्चर नहीं करता है। आइडिया 1 सिर्फ एक कॉलबैक है। यदि आप कॉलबैक का उपयोग करना चाहते हैं:useCallback
:। यदि आप Redux का उपयोग करने की आवश्यकता नहीं है, तो आइडिया 2 काम करेगा और बेहतर होगा। कभी-कभी आप redux का उपयोग करना बेहतर समझते हैं। हो सकता है कि आप जाँच वैधता सेट कर रहे हों कि किसी भी इनपुट फ़ील्ड में त्रुटि या कुछ समान नहीं है। चूंकि हम रेडक्स के विषय पर हैं, इसलिए मान लेते हैं कि ऐसा ही है।
आमतौर पर रिडक्स के साथ त्रुटि से निपटने का सबसे अच्छा तरीका यह है कि राज्य में एक त्रुटि फ़ील्ड है जो तब एक त्रुटि घटक के पास है।
const ExampleErrorComponent= () => {
const error = useSelector(selectError);
if (!error) return null;
return <div className="error-message">{error}</div>;
}
त्रुटि घटक को केवल एक त्रुटि प्रदर्शित करने की आवश्यकता नहीं है, यह साइड इफेक्ट भी कर सकता है useEffect
।
त्रुटि कैसे सेट की जाती है / परेशान है यह आपके आवेदन पर निर्भर करता है। चलो अपने फोन नंबर उदाहरण का उपयोग करें।
1. यदि वैधता की जाँच एक शुद्ध कार्य है, तो इसे रिड्यूसर में किया जा सकता है।
तब आप फ़ोन नंबर परिवर्तन क्रियाओं के जवाब में त्रुटि क्षेत्र सेट या अनसेट कर देंगे। एक स्विच बयान के साथ निर्मित reducer में यह इस तरह दिख सकता है।
case 'PHONE_NUMBER_CHANGE':
return {
...state,
phoneNumber: action.phoneNumber,
error: isValidPhoneNumber(action.phoneNumber) ? undefined : 'Invalid phone number',
};
2. यदि त्रुटियों को बैकएंड द्वारा सूचित किया जाता है, तो त्रुटि कार्रवाई भेजते हैं।
मान लें कि आप फ़ोन नंबर को एक बैकएंड पर भेज रहे हैं जो संख्या के साथ कुछ करने से पहले सत्यापन करता है। आपको पता नहीं चल सकता है कि डेटा क्लाइंट की तरफ वैध है या नहीं। आपको इसके लिए बस सर्वर का शब्द लेना होगा।
const handleSubmit = useCallback(
() => sendPhoneNumber(phoneNumber)
.then(response => dispatch({
type: 'PHONE_NUMBER_SUBMISSION_SUCCESS',
response,
}))
.catch(error => dispatch({
type: 'PHONE_NUMBER_SUBMISSION_FAILURE',
error,
})),
[dispatch, phoneNumber],
);
फिर reducer को त्रुटि के लिए एक उपयुक्त संदेश के साथ आना चाहिए और इसे सेट करना चाहिए।
त्रुटि अनसेट करने के लिए मत भूलना। आप एक परिवर्तन कार्रवाई पर या आवेदन के आधार पर एक और अनुरोध करते समय त्रुटि को परेशान कर सकते हैं।
मेरे द्वारा बताए गए दो दृष्टिकोण परस्पर अनन्य नहीं हैं। आप स्थानीय रूप से पता लगाने योग्य त्रुटियों को प्रदर्शित करने के लिए पहले का उपयोग कर सकते हैं और सर्वर साइड या नेटवर्क त्रुटियों को प्रदर्शित करने के लिए दूसरे का उपयोग कर सकते हैं।