आज मैं अपने प्रतिक्रिया-मूल घटक में एक सरणी को हटाने की कोशिश करता हूं, लेकिन काम नहीं करता है, यहां mi कोड है:
let arr = buques
await arr.splice(index, 1)
await setBuques(arr)
console.log(buques)
alert('Buque eliminado')
यह एक क्लास कंपोनेंट में चल सकता है और प्रॉप्स को अपडेट कर सकता है:
removearray = (index)=>{
let arr = this.state.tags
arr.splice(index, 1)
this.setState({tags: arr})
}
मैं इसे फ़ंक्शन घटक में मानचित्र पुनरावृत्ति पर उपयोग करता हूं यह सरणी को हटा देता है लेकिन कक्षा घटक में मानचित्र पुनरावृत्ति को अद्यतन नहीं करता है जो इसे चला सकता है
लेकिन मैं समझ नहीं पा रहा हूं कि फ़ंक्शन घटक में क्यों काम नहीं करता है (कोई विचार?) उत्तर के लिए धन्यवाद
2 जवाब
इसका कारण परिवर्तनशीलता है।
Mutable एक प्रकार का वेरिएबल है जिसे बदला जा सकता है। जावास्क्रिप्ट में, केवल वस्तुएं और सरणियाँ परिवर्तनशील हैं, न कि आदिम मान। स्रोत
आपको इसे इसमें बदलना होगा:
await setBuques(await buques.filter((el, i) => (i === index)))
console.log(buques)
प्रतीक्षा करें केवल एसिंक में मान्य है जैसे आप कर सकते हैं
const removeItem = async () => {
let arr = buques
await arr.splice(index, 1)
await setBuques(arr)
console.log(buques)
alert('Buque eliminado');
}
सरणी को देखने के लिए अद्यतन करने के लिए आपको सरणी डेटा के रेफरी को बदलने की जरूरत है जैसे
removearray = (index)=>{
let arr = [...this.state.tags]; <-- This is trick -->
arr.splice(index, 1)
this.setState({tags: arr})
}