আমি বলব যে আপনার প্রাথমিক ধারণাগুলির কোনওটিই পুরো ছবিটি ধারণ করে না। আইডিয়া 1 কেবল কলব্যাক is আপনি যদি একটি কলব্যাক ব্যবহার করতে চাইলে: useCallback
। আইডিয়া 2 কাজ করবে এবং যদি আপনাকে রিডুএক্স ব্যবহারের প্রয়োজন না হয় তবে সেগুলি পছন্দনীয়। কখনও কখনও আপনি রিডুএক্স ব্যবহার করা ভাল। হতে পারে আপনি ইনপুট ক্ষেত্রগুলির কোনওটিতেই ত্রুটি বা এর অনুরূপ কিছু নেই যাচাই করে ফর্মের বৈধতা নির্ধারণ করছেন। যেহেতু আমরা রিডুএক্সের বিষয়বস্তুতে আছি তাই ধরে নেওয়া যাক এটিই কেস।
রিডুএক্সের সাথে ত্রুটি পরিচালনার জন্য সর্বোত্তম পদ্ধতির মধ্যে একটি ত্রুটি ক্ষেত্র থাকা অবস্থায় থাকে যা পরে ত্রুটি উপাদানকে দেওয়া হয়।
const ExampleErrorComponent= () => {
const error = useSelector(selectError);
if (!error) return null;
return <div className="error-message">{error}</div>;
}
ত্রুটির উপাদানটি কেবল একটি ত্রুটি প্রদর্শন করতে হবে না, এটি এর সাথে পার্শ্ব প্রতিক্রিয়াও করতে পারে useEffect
।
ত্রুটিটি কীভাবে সেট করা / আনসেট করা হয় তা আপনার আবেদনের উপর নির্ভর করে। আসুন আপনার ফোন নম্বর উদাহরণ ব্যবহার করুন।
1. যদি বৈধতা যাচাই একটি খাঁটি ফাংশন হয় তবে এটি হ্রাসকারক দ্বারা করা যেতে পারে।
তারপরে আপনি ফোন নম্বর পরিবর্তনের ক্রিয়াগুলির প্রতিক্রিয়া হিসাবে ত্রুটি ক্ষেত্রটি সেট বা আনসেট করবেন। একটি স্যুইচ স্টেটমেন্ট দিয়ে তৈরি একটি রিডুসারে এটি এর মতো দেখতে পারে।
case 'PHONE_NUMBER_CHANGE':
return {
...state,
phoneNumber: action.phoneNumber,
error: isValidPhoneNumber(action.phoneNumber) ? undefined : 'Invalid phone number',
};
২. যদি ব্যাকএন্ডের দ্বারা ত্রুটিগুলি প্রতিবেদন করা হয় তবে ত্রুটি ক্রিয়াগুলি প্রেরণ করুন।
ধরা যাক আপনি ফোন নম্বরটি কোনও ব্যাকএন্ডে প্রেরণ করছেন যা নম্বরটি দিয়ে কিছু করার আগে যাচাইকরণ করে। ডেটা ক্লায়েন্টের পক্ষে বৈধ কিনা আপনি জানতে পারবেন না। আপনাকে কেবল এটির জন্য সার্ভারের শব্দটি নিতে হবে।
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],
);
রিডুসারটি ত্রুটির জন্য উপযুক্ত বার্তা নিয়ে এসে সেট করতে হবে।
ত্রুটিটি আনসেট করতে ভুলবেন না। আপনি কোনও পরিবর্তন ক্রিয়াতে বা অ্যাপ্লিকেশনটির উপর নির্ভর করে অন্য কোনও অনুরোধ করার সময় ত্রুটিটি আনসেট করতে পারেন।
আমি যে দুটি পদ্ধতির উল্লেখ করেছি তা পারস্পরিক একচেটিয়া নয়। আপনি স্থানীয়ভাবে সনাক্তযোগ্য ত্রুটিগুলি প্রদর্শন করতে প্রথমটি ব্যবহার করতে পারেন এবং সার্ভারের পাশ বা নেটওয়ার্ক ত্রুটিগুলি প্রদর্শন করতে দ্বিতীয়টি ব্যবহার করতে পারেন।