रेड्यूसर में एक विशिष्ट डेटा लेना चाहते हैं। मुझे एक त्रुटि मिली जो कहती है

TypeError: Cannot read property 'data' of undefined

मैं एक खाली सरणी निर्भरता के साथ useEffect पर कार्रवाई बुला रहा हूँ

  useEffect(() => {
    props.getOrderDetails(props.match.params.guid)
  }, [])

यहाँ मैं इसका उपयोग करने की कोशिश कर रहा हूँ

<div>
 {props.orderDetails[0].data}
  </div>
-1
Yahya Parvar 20 जिंदा 2021, 02:04
जैसा कि त्रुटि कहती है, props.orderDetails[0] अपरिभाषित है। जिसका अर्थ है कि ऑर्डर विवरण सरणी खाली है, शायद इसलिए कि यह डेटा में लोड होने से पहले शुरू में है। इसके अलावा आपके टर्नरी कोड में एक सिंटैक्स त्रुटि है, क्योंकि अगर props.orderDetails एक सरणी है जैसा कि ऐसा लगता है, तो props.orderDetails.data का कोई मतलब नहीं है, यह अपरिभाषित होगा। Arrays में कोई .data गुण नहीं है
 – 
Jayce444
20 जिंदा 2021, 02:12
हाँ, लेकिन मुझे एपीआई से जो सरणी मिल रही है, मैं अपना प्रश्न अपडेट कर रहा हूं
 – 
Yahya Parvar
20 जिंदा 2021, 02:14
ठीक है तो आप इसे एक एपीआई से ला रहे हैं, जिसका अर्थ है कि यह शुरू में खाली है, इसलिए props.orderDetails[0] शुरू में अपरिभाषित है। आपको यह जांचना होगा कि इसमें सामान प्रस्तुत करने का प्रयास करने से पहले सरणी में कोई तत्व है या नहीं, कुछ इस तरह `{props.orderDetails.length ?
{props.orderDetails[0].data}
:null}
 – 
Jayce444
20 जिंदा 2021, 02:17
मुझे लगता है कि यह 'props.getOrderDetails' के साथ समस्या है। कोडसैंडबॉक्स मदद करेगा।
 – 
Omer
20 जिंदा 2021, 02:30
ऐसा लगता है कि आपको अभी भी सही अशक्त जांच नहीं मिली है। अगर मैं सही ढंग से समझूं, तो props.orderDetails सरणी है, इसलिए prop.orderDetails.data फ्लैट-आउट गलत है। जैसा कि @ Jayce444 कहता है, जांचें कि props.orderDetails सरणी में कुछ सत्य length संपत्ति है पहले सरणी और कोई भी वस्तु गुण, यानी props.orderDetails.length && props.orderDetails[0].data, या यदि आप वैकल्पिक श्रृंखला props.orderDetails?.[0]?.data का उपयोग कर सकते हैं।
 – 
Drew Reese
20 जिंदा 2021, 02:43

1 उत्तर

सबसे बढ़िया उत्तर

तो मुझे लगता है कि आप जो पूछ रहे हैं वह यह है कि आप इसे कुछ जगहों पर क्यों इस्तेमाल कर सकते हैं और नहीं... याद रखें Redux सत्य का सरल स्रोत है। इसलिए। यह घटक माउंट के लिए पहले प्रस्तुत किया जा रहा है, इसलिए useEffect() में आप setState, useState का उपयोग कर सकते हैं और 'props.orderDetails.data' को एक राज्य चर बना सकते हैं। कि समस्या को ठीक करना चाहिए क्योंकि यह घटक आरोह के बाद निष्पादित होगा।

1
OTBADMIN 20 जिंदा 2021, 02:32