Komponen Berfungsi Bertindak balas - mengemas kini keadaan menyebabkan keseluruhan halaman dipaparkan semula
P粉180844619
P粉180844619 2023-08-17 14:19:48
0
1
417
<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粉180844619
P粉180844619

membalas semua(1)
P粉904405941

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan