⊗jsrxPmATADR 49 of 57 menu

Menghapuskan Penduaan Permintaan dalam Redux

Pelajaran ini akan berguna untuk kita jika, apabila memulakan aplikasi, penghantaran permintaan data diduakan, dan kemudian pasangan produk dengan id yang sama diterima, dan akibatnya amaran merah yang menakutkan muncul dalam konsol pelayar.

Punca ini terletak pada ciri pemasangan komponen dalam React 18 dan ke atas dalam mod pembangunan (dev), apabila menggunakan React.StrictMode (mereka kata, dalam mod production semua ok dengan ini). Mula-mula komponen dipasang, kemudian dilepaskan dan dipasang semula. Oleh itu permintaan dihantar dua kali.

Mungkin, apabila anda mempelajari bahan ini, pemasangan berganda ini dalam React sudah akan diubah dengan cara tertentu. Kami tidak akan mendalami hal ini, tetapi hanya menggunakan hook React useRef, yang akan membantu kami mengelakkan kekeliruan ini.

Mari buka aplikasi kami dengan produk, dan di dalamnya fail ProductsList.jsx. Import hook useRef ke dalamnya:

import { useEffect, useRef } from 'react'

Dan sekarang ubah sedikit blok kod berikut dengan useEffect:

useEffect(() => { if (productStatus === 'idle') { dispatch(fetchProducts()) } }, [productStatus, dispatch])

Sebagai permulaan, mari perkenalkan pembolehubah baru dataFetch untuk useRef. Pada mulanya tetapkan sifatnya current kepada false. Jika aplikasi sudah dimulakan dan, oleh itu, permintaan telah dihantar, maka sifat current sudah akan true, bermakna kami hanya akan keluar dari fungsi dan permintaan data berulang tidak akan berlaku. Jadi, secebis kod yang dinyatakan di atas sekarang akan menjadi seperti ini:

const dataFetch = useRef(false) useEffect(() => { if (dataFetch.current) return dataFetch.current = true if (productStatus === 'idle') { dispatch(fetchProducts()) } }, [productStatus, dispatch])

Sekarang mulakan semula aplikasi kami dan dengan lega perhatikan kehilangan amaran merah dalam konsol, dan lihat senarai produk tanpa pendua, sekarang terdapat 8, seperti yang kami rancangkan pada pelayan. Sekarang dalam Redux DevTools, action-action, yang dijana semasa permintaan, tidak lagi berulang.

Buka aplikasi anda dengan pelajar, dan di dalamnya fail StudentsList.jsx. Hapuskan masalah dengan permintaan berganda, mengikut bahan pelajaran, jika anda memilikinya.

Melayu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Kami menggunakan kuki untuk operasi laman web, analisis dan personalisasi. Pemprosesan data dijalankan mengikut Polisi Kerahsiaan.
terima semua tataletak tolak