Tidak dapat mengemas kini kandungan dalam useEffect dan render
P粉164942791
2023-08-14 10:16:04
<p>Saya cuba membuat apl web yang menyalakan sekumpulan bunga api sebaik sahaja butang ditekan.
Ia menggunakan React dan saya cuba menggunakan cangkuk useEffect untuk menyalakan bunga api selepas pembolehubah ID dikemas kini.
Apabila ia mula memaparkan ia berfungsi dengan baik dan menyalakan bunga api seperti yang saya mahu, tetapi butang mulakan semula tidak berfungsi. Tiada bunga api ditunjukkan selepas kali pertama.
Dengan menggunakan console.log, saya memastikan bahawa apabila butang ditekan dan kiraan berubah, blok useEffect memang dipanggil. Saya fikir apa yang berlaku adalah kerana bekas itu diisytiharkan semula dan apabila dipaparkan semula ia tidak dikemas kini? Sejujurnya saya tidak tahu, sangat menghargai bantuan <3</p>
<pre class="brush:php;toolbar:false;">import './App.css';
import React daripada 'react';
import {useEffect, useState} daripada 'react';
import Bunga Api daripada 'bunga api-js';
function App() {
kelewatan const = ms => Janji baharu(res => setTimeout(res, ms))
const [count, setCount] = useState(0);
function handleClick() {
setCount(count+1)
console.log('butang ditekan' + kira);
}
useEffect(()=>{
console.log('kesan dipanggil' + kiraan);
bekas const = document.getElementById('bekas-bunga api');
bunga api const = Bunga Api baru(bekas);
bunga api.pelancaran(10);
bunga api.pelancaran(20);
makeRequest();
fungsi async makeRequest() {
menunggu kelewatan(200);
bunga api.pelancaran(20);
menunggu kelewatan(300);
bunga api.pelancaran(20);
}
}, [kiraan]);
kembali (
<div className="App">
<h1 className = "teks">Apl Bunga Api</h1>
<butang onClick={handleClick}>Mulakan semula</button>
<div id = gaya 'bekas bunga api' = {{lebar: '100%', tinggi: '100vh'}}/>
</div>
);
}
eksport Apl lalai;</pre>
<p>Saya fikir bunga api akan muncul semula kerana saya mencipta yang baharu dan memecatnya? Saya rasa saya perlu mencipta objek bunga api di luar useEffect, tetapi ia tidak berfungsi dan memberi saya banyak ralat. </p>
Saya mencipta dua blok useEffect yang berasingan, satu daripadanya hanya memulakan bekas dan objek bunga api! Terima kasih atas bantuan semua orang!