⊗jsrxPmATCDT 47 of 57 menu

Gửi thunk từ component trong Redux

Trong bài học này, chúng ta sẽ gửi một thunk để lấy sản phẩm từ React component ProductsList.

Bây giờ hãy mở ứng dụng sản phẩm của chúng ta, và trong đó là tệp ProductsList.jsx. Trước tiên, hãy thêm thunk fetchProducts mà chúng ta đã tạo vào phần nhập khẩu:

import { selectAllProducts, fetchProducts } from './productsSlice'

Chúng ta cũng sẽ cần hook useDispatch để gửi action creator của chúng ta và hook useEffect bởi vì ở đây chúng ta có một hiệu ứng phụ, vì chúng ta đang xử lý với mạng, và đó là một API bên ngoài:

import { useEffect } from 'react' import { useSelector, useDispatch } from 'react-redux'

Bây giờ, dòng đầu tiên trong mã của hàm ProductsList, trước khi khai báo products, hãy thêm:

const dispatch = useDispatch()

Tiếp theo, khi lấy sản phẩm từ state, chúng ta cũng sẽ trích xuất trạng thái của yêu cầu:

const products = useSelector(selectAllProducts) const productStatus = useSelector((state) => state.products.status)

Và ngay sau đó, chúng ta sẽ nói với React bằng hook useEffect rằng sau khi component được render, chúng ta cần lấy sản phẩm. Ở đây chúng ta cần trạng thái yêu cầu, bởi vì điều quan trọng là yêu cầu đó chỉ được gửi một lần duy nhất:

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

Bây giờ chúng ta có thể khởi chạy ứng dụng của mình, nhấp vào 'Products' trong menu bên trái. Chúng ta chưa thấy danh sách sản phẩm, nhưng nếu chúng ta mở Redux DevTools, thì ở phần bên trái của cửa sổ, chúng ta sẽ thấy các action được tạo tự động (như tôi đã nói trong bài học trước) products/fetchProducts/pendingfulfilled. Bây giờ hãy nhấp vào action products/fetchProducts/fulfilled và trường payload của nó - đây là danh sách sản phẩm của chúng ta! Hoan hô, tất cả các mắt xích trong chuỗi của chúng ta - máy chủ, cơ sở dữ liệu, máy khách và ứng dụng Redux - đều hoạt động nhịp nhàng và đồng bộ. Nhân tiện, như bạn thấy ở đây còn có thuộc tính meta, trong đó chúng ta thấy trạng thái của yêu cầu.

Hãy lưu ý một điều nữa, bạn có thể gặp trường hợp pending và, do đó, fulfilled sẽ được hiển thị hai lần. Nếu điều đó xảy ra, thì đừng buồn, chúng ta sẽ nói về điều này sau.

Mở ứng dụng quản lý sinh viên của bạn. Mở tệp StudentsList.jsx trong đó. Nhập các hook và thunk cần thiết vào đó theo tài liệu từ bài học.

Sau khi nghiên cứu tài liệu bài học, hãy lấy trạng thái yêu cầu studentStatus, và sau đó, sử dụng useEffect, gửi fetchStudents chỉ với điều kiện là giá trị của studentStatus'idle'.

Khởi chạy ứng dụng của bạn, nhấp vào 'Students' trong menu ứng dụng bên trái, và sau đó khởi chạy tiện ích mở rộng Redux DevTools trong trình duyệt, giống như trong bài học này bạn sẽ phải thấy các action với pendingfulfilled (và trong đó payload chứa sinh viên). Hãy khám phá các tab của tiện ích mở rộng.

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