मेरे पास एक कार्यात्मक घटक है जहां मैं एक हुक के माध्यम से प्रतिक्रिया-राउटर में नामित यूआरएल पैराम तक पहुंचने का प्रयास कर रहा हूं।

useEffect(() => {
    document.title = props.match.params.subject

    UserServices.getSubject(props.match.params.subject)
      .then(resp => {
        if (resp.data.lectures !== undefined) {
          setLectures(resp.data.lectures)
          mountLecture(resp.data.lectures[0].title)
        }
      })
  }, [])

useEffect(() => {
    if(props.match.params.title) mountLecture(props.match.params.title)
    else mountLecture(lectures[0].title)
  }, [props.match.params])

हालांकि, यह मुझे can't read the property title of undefined बताता रहता है, भले ही यह कंसोल लॉग में आता हो।

1
Beulah Akindele 25 सितंबर 2020, 14:06

1 उत्तर

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

इसलिए मैंने useEffect हुक को संयोजित करने का निर्णय लिया क्योंकि मुझे केवल उन्हें एक बार चलाने की आवश्यकता थी।

फिर मैंने 'सेट लेक्चर ()' को कॉल करने से पहले पैरा की जांच करने के लिए if स्टेटमेंट का इस्तेमाल किया। नोट करने के लिए कुछ दिलचस्प है, जब मैंने setLectures() को if स्टेटमेंट से पहले (DRY होने के लिए) कॉल किया, तो console.log params। यह UserServices प्रतिक्रिया डेटा में सरणी का अंतिम आइटम लौटाता है।

  useEffect(() => {
    document.title = props.match.params.subject

    UserServices.getSubject(props.match.params.subject)
      .then(resp => {
          console.log(props.match.params.title)
          if (props.match.params.title !== undefined) {
            setLectures(resp.data.lectures)
            mountLecture(props.match.params.title)
            console.log(1)
          }
          else {
            setLectures(resp.data.lectures)
            console.log(10)
            mountLecture(resp.data.lectures[0].title)
          }
      })
  }, [])
1
Beulah Akindele 25 सितंबर 2020, 11:33