Kod yang hanya berjalan sekali apabila keadaan komponen React dikemas kini
P粉340980243
P粉340980243 2023-09-01 21:08:59
0
1
552

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.

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.

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).

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.

Saya harap perkara ini dibetulkan pada mulanya dan kod tertentu ini tidak seharusnya dipaparkan semula, tidak kira bagaimana komponen itu disegarkan semula.

Blok kod untuk mendapatkan baki adalah seperti berikut:

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

Saya memerlukan pembolehubah yang dipanggil footerBalanceAtStart supaya saya boleh memaparkan kedudukan bersih (dalam pembolehubah netPositionBalance) dari titik permulaan, serupa dengan yang berikut:

let netPositionBalance = Number(footerBalanceAtStart) - Number(footerBalance); 

Saya ingin "footerBalanceAtStart" ditakrifkan untuk mendapatkan baki sekali sahaja dan kemudian kekal malar untuk keseluruhan tempoh projek.

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 keadaansetAny()

    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!