जब क्लिक किया जाता है तो मैं राज्य हुक पर नाम प्रोप पास करना चाहता हूं लेकिन यह अपरिभाषित हो जाता है

    const [fav, setFav ] = useState([]); 
    
         useEffect(() => {
        dispatch(fetchProfileAction(user));
        dispatch(fetchReposAction(user));
      }, [user, dispatch]);
    
            {reposList?.name !== "Error" &&
          reposList?.map(repo => (
            <>
                <div className="col-6 g-3 ">
                <div className="border rounded-pill px-3 py-2 bg-secondary  ">
                <i 
                class="far fa-star pe-2" role={ 'button'}
                name={repo?.name} role={'button'}
                onClick={e => setFav(...fav, e.target.name)}
                ></i> 
                <a
                    target="_blank"
                    href={repo?.html_url}
                    className="text-light"
                    name={repo?.name} role={'button'}
                    onClick={e => setFav(...fav, e.target.name)}
                  >
                    {repo?.name} 
                  </a>
                  <strong className="text-light ps-2">({repo?.language})</strong>
              </div>
            </div>
                  
                
            </>
          ))}
1
Fatih Can 25 पद 2021, 13:44
2
आपको एक सरणी में फैलाना चाहिए: setFav([...fav, e.target.name])
 – 
Nick Parsons
25 पद 2021, 13:46
धन्यवाद लेकिन अब यह लौटाता है [ undefined,undefined ] उचित डेटा प्राप्त नहीं कर सकता
 – 
Fatih Can
25 पद 2021, 13:48
1
यहां name={repo?.name} पेज पर HTML-कोड में आपको क्या मिलता है? क्या विशेषता मौजूद है?
 – 
Alexandr
25 पद 2021, 13:52
यह पाठ क्षेत्र में अच्छी तरह से काम करता है उचित नाम देता है लेकिन मैं इसे तत्व पर क्लिक करके राज्य हुक पर ले जाना चाहता हूं
 – 
Fatih Can
25 पद 2021, 13:54

2 जवाब

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

https://docs.w3cub.com/dom/element/name नाम के अनुसार आधिकारिक तौर पर केवल निम्नलिखित तत्वों पर लागू होता है: <a>, <applet>, <button>, <form>, <frame>, <iframe>, <img>, <input>, <map>, <meta>, <object>, <param>, <select>, and <textarea>

इसलिए, चूंकि आपने i टैग पर नाम विशेषता का उपयोग किया है, इसलिए आपको getAtrribute द्वारा नाम मान प्राप्त करने का प्रयास करना चाहिए, जैसे:

 <i 
   class="far fa-star pe-2" role={ 'button'}
   name={repo?.name}
   role={'button'}
   onClick={e => setFav( [...fav, e.target.getAttribute('name')] )}
1
Saeed Shamloo 25 पद 2021, 14:30

अगर आप fav की मौजूदा सरणी में नाम जोड़ना चाहते हैं, तो कार्यात्मक अद्यतन:

onClick={e => setFav(fav => [...fav, e.target.name])}

यह अनुशंसा की जाती है कि राज्यों को केवल पढ़ने के लिए माना जाना चाहिए: पिछली स्थिति पर आधारित वर्तमान स्थिति में किसी भी संशोधन को कार्यात्मक अद्यतन पैटर्न का उपयोग करना चाहिए। यह प्रतिक्रिया को एक साथ राज्य में बैच परिवर्तनों की अनुमति देता है: इस उत्तर में और स्पष्टीकरण देखें

2
Terry 25 पद 2021, 13:52