मैं हुक के साथ एक समय प्रदर्शन घटक बनाने की कोशिश कर रहा हूं और मुझे "TypeError: date.toLocaleTimeString एक फ़ंक्शन नहीं है।" मैं इसके लिए बहुत शुरुआत कर रहा हूं इसलिए किसी भी मदद की बहुत सराहना की जाएगी। मैंने के घटक को बुलाया है

<Time date={date} setDate={setDate}/>

मेरी मुख्य फ़ाइल में और मैंने समय को ठीक से आयात/निर्यात किया है। यहाँ मेरी Time.js फ़ाइल से मेरा कोड है:

function Time(date, setDate) {
    //Replaces componentDidMount and componentWillUnmount
 useEffect(() => {
    var timerID = setInterval( () => tick(), 1000 );
  
    return function cleanup() {
        clearInterval(timerID);
      };
   });
  
     function tick() {
      setDate(new Date());
     }
     return (
        <div>
        <div className="test">1</div>
          <h2>It is {date.toLocaleTimeString()}.</h2>
        </div>
      );
}

शुक्रिया!

0
Javier Hernandez 29 पद 2020, 06:02
date संभवत: एक Date ऑब्जेक्ट नहीं है जब यह पहली बार प्रस्तुत करता है (यह शायद अपरिभाषित है)। इस पर निर्भर करता है कि आप Time को कैसे कॉल करते हैं।
 – 
Heretic Monkey
29 पद 2020, 06:08
date का प्रारंभिक मान क्या है?
 – 
Clark
29 पद 2020, 06:09
मैं क्षमाप्रार्थी हूं। मुझे यह उल्लेख करना चाहिए था कि मैंने अपनी मुख्य फ़ाइल में भी const [date, setDate] = useState(new Date()); घोषित किया है। इसलिए date का प्रारंभिक मान Date() होना चाहिए?
 – 
Javier Hernandez
29 पद 2020, 06:12
संभावित रूप से यहां एकमात्र मुद्दा यह है कि आपका Time घटक केवल एक तर्क (प्रोप) लेता है। आप प्रॉप्स को इस प्रकार नष्ट कर सकते हैं: function Time({ date, setDate })
 – 
Nick
29 पद 2020, 06:14
आई लव यू @ निक यू आर ए बीस्ट
 – 
Javier Hernandez
29 पद 2020, 06:16

1 उत्तर

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

प्रतिक्रिया घटक केवल एक तर्क (प्रॉप्स) लेते हैं। आप अपने प्रॉप्स से अलग-अलग चाबियों को निकालने के लिए डिस्ट्रक्टिंग का उपयोग कर सकते हैं और आपका बाकी घटक अपरिवर्तित रहेगा:

function Time({ date, setDate }) {
  // `date` will now be a Date object as you expect
}
0
Nick 29 पद 2020, 06:17