Kod yang hanya berjalan sekali apabila keadaan komponen React dikemas kini
P粉340980243
P粉340980243 2023-09-01 21:08:59
0
1
618
<p>Saya mempunyai komponen tindak balas yang dipanggil index.tsx dalam projek permainan saya yang mempunyai pembolehubah yang mengemas kini keadaan, dengan mengandaikan bahawa komponen itu menyegarkan setiap kali baki pengguna berubah. </p><p> Saya sedang mencipta fungsi "kedudukan bersih" di mana apabila memulakan permainan, baki pengguna disimpan sebagai nilai rujukan dan kemudian hanya penambahan dan penolakan untuk setiap transaksi harus dibuat daripada nilai rujukan itu. </p><p> Dengan mengandaikan pengguna mempunyai baki $5000 pada permulaan (dalam pembolehubah footerBalance), maka label Kedudukan Bersih akan menunjukkan nilai tersebut sebagai 0 (dalam pembolehubah netPositionBalance), dengan $5000 sebagai asas. Kini pengguna memenangi $100 dalam permainan seterusnya, bakinya akan menjadi $5100 (dalam pembolehubah footerBalance) dan kedudukan bersih akan menjadi $100 (dalam pembolehubah netPositionBalance). </p><p> Apa yang berlaku sekarang ialah sebaik sahaja baki dikemas kini, jumlah kedudukan bersih saya juga dikemas kini, dan kerana ia berada dalam fail komponen yang sama, kedudukan bersih menjadi 0. </p><p>Saya harap perkara ini dibetulkan pada mulanya dan kod tertentu ini tidak seharusnya dipaparkan semula, tidak kira bagaimana komponen itu disegarkan semula. </p><p></p> <p>Blok kod untuk mendapatkan baki adalah seperti berikut:</p> <pre class="brush:php;toolbar:false;">const footerBalance = useAppSelector(state => state.app.footerUnformattedBalance); //Ini akan menukar baki, iaitu ia akan memberikan $5000 selepas memenangi $100 Selepas itu , ia akan menjadi $5100</pre> <p>Saya memerlukan pembolehubah yang dipanggil footerBalanceAtStart supaya saya boleh memaparkan kedudukan bersih (dalam pembolehubah netPositionBalance) dari titik permulaan, serupa dengan yang berikut: </p> <pre class="brush:php;toolbar:false;">let netPositionBalance = Number(footerBalanceAtStart) - Number(footerBalance); <p>Saya ingin "footerBalanceAtStart" ditakrifkan untuk mendapatkan baki sekali sahaja dan kemudian kekal malar untuk keseluruhan tempoh projek. </p>
P粉340980243
P粉340980243

membalas semua(1)
P粉851401475

Jadi saya jumpa jawapannya. Nampaknya saya boleh menggunakan useEffect di sini juga, seperti ini:

const [footerBalanceAtStart, setAny] = useState(footerBalance);

Kini ia hanya akan menyimpan nilai sekali dan tidak akan berubah secara automatik tanpa fungsi kemas kini keadaan setAny()

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