亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Die Benutzeroberfl?che in Reactjs wird nicht aktualisiert
P粉649990163
P粉649990163 2023-08-14 17:32:30
0
1
864
<p>Ich lerne React und habe einige Grundlagen gelernt, also habe ich dieses Wissen genutzt, um dieses grundlegende Projekt zu erstellen. Ich erstelle eine einfache App zum Speichern von Notizen mit React und Firebase. </p> <p>Fehlerfreie Datenübertragung zur Firebase-Datenbank. </p> <p>Daten abrufen. </p> <p>Das Problem, mit dem ich konfrontiert bin, besteht darin, dass die abgerufenen Daten in der Benutzeroberfl?che nicht aktualisiert werden. </p> <p><br /></p> <pre class="snippet-code-js lang-js Prettyprint-override"><code>import { useEffect, useState } from 'react'; import { AiFillCaretUp } aus 'react-icons/ai'; import './Card.css'; Exportieren Sie die Standardfunktion Card(props) { const [showPara, setShowPara] = useState(false); const [data, setData] = useState([]); console.log('inside card'); useEffect(() => { let NotesData = []; console.log('inside UseEffect'); const fetchNote = async () => const Response = waiting fetch('https://notes-keeper-react-default-rtdb.firebaseio.com/notes.json'); const data = Warten auf Antwort.json(); for (const key in data) { NotesData.push({ id: key, title: data[key].title, note: data[key].note }); } }; fetchNote(); // console.log(notesData); setData(notesData); }, []); const toggleHandler = () => setShowPara((preVal) => !preVal); }; const paraClass = showPara ? 'card-para toggle' : 'card-para'; const rotieren = showPara ? 'Symbol drehen': 'Symbol'; zurückkehren ( <div className='container'> {console.log('im Kartencontainer', Daten)} {data.map((card) => ( <div className='card' key={card.id}> <div className='card-title' onClick={toggleHandler}> <h3>{card.title}</h3> <AiFillCaretUp className={rotate} /> </div> <div className={paraClass}> <p>{card.note}</p> </div> </div> ))} </div> ); }</code></pre> <p><br /></p> <p>Daten hier anzeigen</p> <pre class="brush:php;toolbar:false;">{console.log('inside card container', data)}</pre> <p>Aber es funktioniert nicht</p> <pre class="brush:php;toolbar:false;">{data.map((card) => ( <div className='card' key={card.id}> <div className='card-title' onClick={toggleHandler}> <h3>{card.title}</h3> <AiFillCaretUp className={rotate} /> </div> <div className={paraClass}> <p>{card.note}</p> </div> </div> ))} </div></pre> <p>Ich hoffe, Sie verstehen das Problem. </p>
P粉649990163
P粉649990163

Antworte allen(1)
P粉276064178

一種方法是這樣寫:

useEffect(() => {
    let notesData = [];
    const fetchNote = async () => {
      const response = await fetch('https://notes-keeper-react-default-rtdb.firebaseio.com/notes.json');
      const data = await response.json();
      for (const key in data) {
        notesData.push({ id: key, title: data[key].title, note: data[key].note });
      }
      setData(notesData); // 在這里數(shù)據(jù)已經(jīng)準(zhǔn)備好了
    };
    fetchNote();
  }, []);

fetchNote 是一個異步函數(shù),所以它需要一些時間來完成任務(wù)并獲取數(shù)據(jù)。因此,你應(yīng)該等待數(shù)據(jù)準(zhǔn)備好,不幸的是,當(dāng)你在調(diào)用 fetchNote() 后立即使用 setData(notesData) 時,數(shù)據(jù)還沒有準(zhǔn)備好。

或者你可以在異步函數(shù)內(nèi)部返回數(shù)據(jù),并自動返回另一個解析為所需數(shù)據(jù)的 promise,然后你可以更新你的數(shù)據(jù):

useEffect(() => {
    let notesData = [];
    const fetchNote = async () => {
      const response = await fetch('https://notes-keeper-react-default-rtdb.firebaseio.com/notes.json');
      const data = await response.json();
      for (const key in data) {
        notesData.push({ id: key, title: data[key].title, note: data[key].note });
      }
      return notesData; // 返回一個解析為 'notesData' 的 promise
    };

    fetchNote()
      .then((updatedData) => {
        setData(updatedData);
      })
  }, []);
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage