এই কাজ করার একাধিক উপায় আছে যেহেতু রাষ্ট্র আপডেট একটি হল ASYNC অপারেশন তাই রাষ্ট্র বস্তু আপডেট করার জন্য, আমরা ব্যবহার করতে হবে ফাংশন আপডেটার সঙ্গে setState
।
1- সহজতম:
প্রথমে একটি অনুলিপি তৈরি করুন jasper
তারপরে এর পরিবর্তনগুলি করুন:
this.setState(prevState => {
let jasper = Object.assign({}, prevState.jasper); // creating copy of state variable jasper
jasper.name = 'someothername'; // update the name property, assign a new value
return { jasper }; // return new object jasper object
})
ব্যবহারের পরিবর্তে Object.assign
আমরা এটি এ জাতীয়ভাবে লিখতে পারি:
let jasper = { ...prevState.jasper };
2- স্প্রেড অপারেটর ব্যবহার করে :
this.setState(prevState => ({
jasper: { // object that we want to update
...prevState.jasper, // keep all other key-value pairs
name: 'something' // update the value of specific key
}
}))
দ্রষ্টব্য: Object.assign
এবং Spread Operator
কেবল অগভীর অনুলিপি তৈরি করে , তাই যদি আপনি নেস্টেড অবজেক্ট বা বস্তুর অ্যারে সংজ্ঞায়িত করেন তবে আপনার আলাদা পদ্ধতির প্রয়োজন।
নেস্টেড স্টেট অবজেক্ট আপডেট করা হচ্ছে:
ধরুন আপনি এই হিসাবে রাষ্ট্রকে সংজ্ঞায়িত করেছেন:
this.state = {
food: {
sandwich: {
capsicum: true,
crackers: true,
mayonnaise: true
},
pizza: {
jalapeno: true,
extraCheese: false
}
}
}
পিজ্জা অবজেক্টের এক্সট্রাচিজ আপডেট করতে:
this.setState(prevState => ({
food: {
...prevState.food, // copy all other key-value pairs of food object
pizza: { // specific object of food object
...prevState.food.pizza, // copy all pizza key-value pairs
extraCheese: true // update value of specific key
}
}
}))
অবজেক্টের অ্যারে আপডেট করা হচ্ছে:
ধরে নেওয়া যাক আপনার একটি টুডো অ্যাপ্লিকেশন রয়েছে এবং আপনি এই ফর্মটিতে ডেটা পরিচালনা করছেন:
this.state = {
todoItems: [
{
name: 'Learn React Basics',
status: 'pending'
}, {
name: 'Check Codebase',
status: 'pending'
}
]
}
যে কোনও টুডো অবজেক্টের স্থিতি আপডেট করতে, অ্যারেতে একটি মানচিত্র চালান এবং প্রতিটি বস্তুর কিছু অনন্য মান পরীক্ষা condition=true
করে দেখুন, নতুন মানটিকে আপডেট মান সহ অন্য কোনও বস্তুর সাথে ফিরে আসুন ।
let key = 2;
this.setState(prevState => ({
todoItems: prevState.todoItems.map(
el => el.key === key? { ...el, status: 'done' }: el
)
}))
পরামর্শ: যদি বস্তুর কোনও স্বতন্ত্র মান না থাকে তবে অ্যারে সূচকটি ব্যবহার করুন।
age
সম্পত্তিটি হারিয়ে ফেলতেনjasper
।