Redux store में उत्पाद डेटा को अपडेट करना
हमने उत्पादों को जोड़ना सीख लिया है, लेकिन क्या होगा अगर हम उत्पाद की जानकारी को बदलना चाहते हैं? आइए इस और आने वाले पाठों में देखें कि यह कैसे किया जाए।
आइए हमारे उत्पाद ऐप्लिकेशन को खोलें
और productsSlice.js फ़ाइल में जाएं। आइए शुरू करें
इससे कि हमें products स्लाइस के लिए
एक और रिड्यूसर लिखने की आवश्यकता है, जो
उत्पाद को अपडेट करते समय चलेगा।
इसे productUpdated नाम दें और फ़ील्ड
reducers में productAdded रिड्यूसर के बाद जोड़ें। साथ ही
इसे तुरंत पैरामीटर state और
action पास करें, जिन पर, जैसा कि हमें याद है,
रिड्यूसर काम करता है:
reducers: {
productAdded(state, action) {
state.push(action.payload)
},
productUpdated(state, action) {},
},
आइए अब सोचते हैं कि उत्पाद को अपडेट करने के लिए हमें
किस डेटा की आवश्यकता होगी। सबसे पहले
- यह id है, इसके द्वारा हम store में
हमारे इच्छित उत्पाद को ढूंढ पाएंगे। बाकी
डेटा - नाम, विवरण, कीमत और मात्रा
बदलने के लिए हमारे पास होगी। ये सभी मान
हमें action ऑब्जेक्ट के payload प्रॉपर्टी से मिलेंगे,
जो हमारे पास आएगा, और, अगर हम इसे
हाथ से लिख रहे होते, तो यह नीचे दिखाए गए
अनुसार दिखता। ध्यान दें कि अपेक्षित मान
प्रॉपर्टी payload का - एक आर्गुमेंट है, इसलिए हम
यहाँ एक ऑब्जेक्ट पास करेंगे (इस पर हम आगे
चर्चा करेंगे):
{
type: 'products/productUpdated',
payload: {id, name, desc, price, amount}
}
मुख्य बिंदुओं को समझने के बाद, अब हम
productUpdated के लिए कोड लिख सकते हैं।
सबसे पहले action ऑब्जेक्ट से
बदला हुआ डेटा प्राप्त करेंगे:
productUpdated(state, action) {
const { id, name, desc, price, amount } = action.payload
},
अब हम प्राप्त id के आधार पर उस उत्पाद को ढूंढेंगे,
जिसे बदलने की आवश्यकता है:
productUpdated(state, action) {
const { id, name, desc, price, amount } = action.payload
const desiredProduct = state.find(product => product.id === id)
},
यदि ऐसा उत्पाद store में मिल गया, तो हम उसके डेटा को नए मानों से बदल देंगे:
productUpdated(state, action) {
const { id, name, desc, price, amount } = action.payload
const desiredProduct = state.find(product => product.id === id)
if (desiredProduct) {
desiredProduct.name = name
desiredProduct.desc = desc
desiredProduct.price = price
desiredProduct.amount = amount
}
},
हमें केवल एक्शन क्रिएटर को निर्यात करना बचा है
ताकि कंपोनेंट में उपयोग किया जा सके,
जिसे createSlice हमारे लिए बनाएगा।
आइए इसे फ़ाइल के अंत में मौजूद productAdded के
साथ निर्यात में जोड़ दें:
export const { productAdded, productUpdated } = productsSlice.actions
अपने छात्रों वाला ऐप्लिकेशन खोलें।
पाठ की सामग्री का अध्ययन करने के बाद, studentsSlice.js फ़ाइल में
productsSlice के लिए एक और रिड्यूसर लिखें,
जो store में छात्र के डेटा को अपडेट करेगा
यदि उपयोगकर्ता द्वारा उन्हें बदल दिया जाता है।
इसे studentUpdated नाम दें।
और इस मामले में आपका action ऑब्जेक्ट कैसा दिखेगा? इसका कोड उत्तर में भेजें।
फ़ाइल के अंत में प्राप्त एक्शन क्रिएटर
studentUpdated को निर्यात करें।