⊗jsrxPmATADR 49 of 57 menu

Loại bỏ yêu cầu trùng lặp trong Redux

Bài học này sẽ hữu ích cho chúng ta trong trường hợp, khi khởi chạy ứng dụng, việc gửi yêu cầu dữ liệu bị trùng lặp, và sau đó nhận được các cặp sản phẩm có id giống nhau, và hệ quả là xuất hiện các cảnh báo màu đỏ đáng sợ trong console trình duyệt.

Nguyên nhân của việc này nằm ở đặc điểm gắn kết components trong React 18 và các phiên bản cao hơn trong chế độ phát triển (dev), khi sử dụng React.StrictMode (người ta nói rằng trong chế độ production mọi thứ đều ổn với việc này). Đầu tiên, component được gắn kết, sau đó ngắt kết nối và lại được gắn kết lần nữa. Do đó mà yêu cầu được gửi đi hai lần.

Có thể, khi bạn học tài liệu này, việc gắn kết kép trong React đã được thay đổi bằng cách nào đó. Chúng ta sẽ không đi sâu vào chi tiết, mà chỉ đơn giản sử dụng React hook useRef, hook này sẽ giúp chúng ta tránh được sự nhầm lẫn này.

Hãy mở ứng dụng của chúng ta với các sản phẩm, và trong đó là tệp ProductsList.jsx. Import hook useRef vào đó:

import { useEffect, useRef } from 'react'

Và bây giờ hãy thay đổi một chút khối code sau với useEffect:

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

Đầu tiên, hãy tạo một biến mới dataFetch cho useRef. Ban đầu, hãy đặt thuộc tính current của nó thành false. Nếu ứng dụng đã được khởi chạy và, tương ứng, yêu cầu đã được gửi đi, thì thuộc tính current sẽ là true, có nghĩa là chúng ta chỉ cần thoát khỏi hàm và yêu cầu dữ liệu lặp lại sẽ không xảy ra. Vì vậy, đoạn code được đề cập ở trên bây giờ sẽ như thế này:

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

Bây giờ hãy khởi chạy lại ứng dụng của chúng ta và nhẹ nhàng ghi nhận sự biến mất của các cảnh báo màu đỏ trong console, và xem danh sách sản phẩm không có bản sao, bây giờ có 8 sản phẩm, như chúng ta đã lên kế hoạch trên máy chủ. Bây giờ trong Redux DevTools, các hành động được tạo ra khi yêu cầu, không còn lặp lại nữa.

Hãy mở ứng dụng của bạn với sinh viên, và trong đó là tệp StudentsList.jsx. Hãy loại bỏ vấn đề yêu cầu kép, theo tài liệu bài học, nếu bạn có vấn đề như vậy.

Tiếng Việt
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối