অগভীর তুলনা হয় যখন তুলনামূলকভাবে বস্তুর বৈশিষ্ট্যগুলি "===" বা কঠোর সাম্য ব্যবহার করে সম্পন্ন করা হয় এবং বৈশিষ্ট্যের আরও গভীর তুলনা পরিচালনা করবে না। যেমন
function shallowCompare(newObj, prevObj){
for (key in newObj){
if(newObj[key] !== prevObj[key]) return true;
}
return false;
}
var game_item = {
game: "football",
first_world_cup: "1930",
teams: {
North_America: 1,
South_America: 4,
Europe: 8
}
}
var updated_game_item1 = {
game: "football",
first_world_cup: "1930",
teams: {
North_America: 1,
South_America: 4,
Europe: 8
}
}
shallowCompare(updated_game_item1, game_item);
যদিও উভয় বস্তু একইরূপে প্রদর্শিত হয়, game_item.teamsতবে একই রেফারেন্স নয় updated_game_item.teams। ২ টি অবজেক্ট একই হওয়ার জন্য তাদের একই জিনিসকে নির্দেশ করা উচিত। এইভাবে রাজ্যে এই ফলাফলগুলি আপডেট হতে মূল্যায়ন করা হচ্ছে
var updated_game_item2 = {
game: "football",
first_world_cup: "1930",
teams: game_item.teams
}
shallowCompare(updated_game_item2, game_item);
এবার নতুন এবং পুরাতন অবজেক্টের টিমের সম্পত্তি একই বস্তুর দিকে নির্দেশ করার কারণে এই সম্পত্তিটির প্রত্যেকটি যথার্থ তুলনার জন্য সত্য ফিরে আসে।
var updated_game_item3 = {
first_world_cup: 1930
}
shallowCompare(updated_game_item3, game_item);
updated_game_item3.first_world_cupসম্পত্তি ব্যর্থ 1930 যেমন কঠোর মূল্যায়ন একটি সংখ্যা থাকাকালীন game_item.first_world_cupএকটি পংক্তি। তুলনাটি আলগা হলে (==) এটি পাস হয়ে যেত। তবুও এর ফলে রাষ্ট্রীয় আপডেটও আসবে।
অতিরিক্ত নোট:
- গভীর তুলনা করা অর্থহীন কারণ এটি যদি রাষ্ট্রীয় বস্তুটি গভীরভাবে বাসা বাঁধে তবে তা পারফরম্যান্সকে উল্লেখযোগ্যভাবে প্রভাবিত করে। তবে যদি এটি খুব ঘৃণ্য না হয় এবং আপনার এখনও একটি গভীর তুলনা প্রয়োজন, তবে এটি প্রয়োগ করা উচিত কম্পোনেন্ট আপডেটে এবং এটি পর্যাপ্ত কিনা তা পরীক্ষা করুন।
- আপনি অবশ্যই রাষ্ট্রীয় অবজেক্টটি সরাসরি রূপান্তর করতে পারেন তবে উপাদানগুলির স্থিতি প্রভাবিত হবে না, কারণ সেটস্টেট পদ্ধতি প্রবাহে এটি প্রতিক্রিয়া করে উপাদান উপাদান চক্র হুক প্রয়োগ করে। আপনি যদি ইচ্ছাকৃতভাবে উপাদান লাইফ-চক্র হুকগুলি এড়ানোর জন্য রাষ্ট্রীয় অবজেক্টটি সরাসরি আপডেট করেন তবে সম্ভবত আপনার স্ট্যাটাসটি না করে ডেটা সংরক্ষণ করার জন্য একটি সাধারণ পরিবর্তনশীল বা অবজেক্ট ব্যবহার করা উচিত।