Rumah  >  Soal Jawab  >  teks badan

Komponen Berfungsi Bertindak balas - mengemas kini keadaan menyebabkan keseluruhan halaman dipaparkan semula

<p>Terima kasih banyak atas bantuan anda terlebih dahulu. Saya tidak pasti mengapa apabila saya mengemas kini <kod>percentageDone</code> keadaan dalam <code>loadDataFunction()</code> ia mengemas kini <code>RenderData1Component</code> jangan jadi begini. Bukankah ia sepatutnya hanya dikemas kini apabila data1 berubah? </p> <p>Saya mempunyai sekeping kod seperti ini. </p> <pre class="brush:php;toolbar:false;">const [loading, setLoading] = useState(true); const [data1, setData1] = useState(null); const [percentageDone, setPercentageDone] = useState(0); LoadDataFunction(){ // Panggil berbilang apis (katakan terdapat 10) dalam satu janji dan panggil setPercentageDone() apabila setiap api selesai. } useEffect( () ==> { LoadDataFunction() },[]) useEffect( () ==> { jika (keadaan berpuas hati) { LoadDataFunction() // Muat semula data terkini } }, [syarat]) kembali ( memuatkan peratusanSelesai : <RenderData1Component data={data1}> )</pra> <p>Saya hanya mahu mengemas kini <kod><RenderData1Component data={data1}></code> apabila <kod>data1</kod> /kod>. Tetapi apabila saya mengemas kini <code>setPercentageDone()</code>, ia juga mencetuskan pemaparan semula <code><RenderData1Component data={data1}></code>. </p>
P粉180844619P粉180844619401 hari yang lalu351

membalas semua(1)saya akan balas

  • P粉904405941

    P粉9044059412023-08-18 11:26:59

    Saya tidak pasti, tetapi ini mungkin membantu anda.

    const [loading, setLoading] = useState(true);
    const [data1, setData1] = useState(null);
    const [percentageDone, setPercentageDone] = useState(0);
    
    const loadDataFunction = async () => {
      // 执行 API 调用并更新 percentageDone
    };
    
    useEffect(() => {
      loadDataFunction().then(() => {
        setLoading(false);
      });
    }, []);
    
    useEffect(() => {
      if (condition) {
        setLoading(true);
        loadDataFunction().then(() => {
          setLoading(false);
        });
      }
    }, [condition]);
    
    return (
      loading ? (
        <div>{percentageDone}% 加载中...</div>
      ) : (
        <RenderData1Component data={data1} />
      )
    );

    Mungkin anda memberikan beberapa syarat, yang boleh menyebabkan masalah. Sila semak ini juga.

    balas
    0
  • Batalbalas