⊗jsrxPmATADR 49 of 57 menu

Kuondoa Maombi Yaliyoingizwa Mara Mbili katika Redux

Somo hili litakuwa muhimu kwetu ikiwa wakati wa kuzindua programu yetu maombi yanatumwa mara mbili, kisha bidhaa huja kwa jozi zenye kitambulisho kilekile, na matokeo yake onyo lenye rangi nyekundu linaonekana kwenye console ya kivinjari.

Sababu ya hii iko katika hulka ya kuunganishwa kwa vifaa (components) katika React 18 na toleo la juu zaidi katika hali ya ukuzaji (dev), wakati wa kutumia React.StrictMode (inasemekana, katika hali ya production hakuna tatizo na hili). Kwanza kifaa huunganishwa, kisha hutenganishwa na kisha kuunganishwa tena. Kwa hiyo ombi linatumwa mara mbili.

Inawezekana, wakati unaposoma nyenzo hii, kuunganishwa huku mara mbili katika React kutakuwa kimebadilishwa kwa namna fulani. Hatutaingia kwenye maelezo ya chini, bali tutatumia mdudu wa React useRef, ambao atatusaidia kuepuka hitilafu hii.

Wacha tufungue programu yetu ya bidhaa, na ndani yake faili ProductsList.jsx. Tuingize ndani yake mdudu useRef:

import { useEffect, useRef } from 'react'

Na sasa tubadilishe kidogo kipande kinachofuata cha msimbo na useEffect:

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

Kwanza, tuanzishe kigeu kipya dataFetch kwa useRef. Mwanzoni tuweke sifa yake current kuwa false. Ikiwa programu tayari imezinduliwa na, ipasavyo, ombi limetumwa, basi sifa current itakuwa true, maana yake tutatoka tu kwenye kitendo na ombi la data halitafanyika tena. Kwa hiyo, kipande cha msimbo kilichotajwa hapo juu sasa kitakuwa kama hiki:

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

Sasa tuanzishe tena programu yetu na kuthibitisha kwa faraja kutoweka kwa onyo nyekundu kwenye console, na kuona orodha ya bidhaa bila nakala, sasa kuna 8, kama tulivyopanga kwenye seva. Sasa katika Redux DevTools vitendo, vinavyotokana na ombi, havijirudii tena.

Fungua programu yako ya wanafunzi, na ndani yake faili StudentsList.jsx. Ondoa shida ya ombi mara mbili, kulingana na nyenzo za somo, ikiwa inatokea kwako.

Kiswahili
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Tunatumia kuki kwa ajili ya uendeshaji wa tovuti, uchambuzi na ubinafsishaji. Usindikaji wa data unafanyika kulingana na Sera ya Faragha.
kubali yote sanidi kataa