⊗jsrxPmATGS 51 of 57 menu

Lấy dữ liệu người bán trong Redux

Hãy khởi chạy ứng dụng sản phẩm của chúng ta. Chúng ta thấy rằng trong các thẻ sản phẩm, người bán không được hiển thị. Hãy lấy dữ liệu từ máy chủ và hiển thị thông tin này. Để làm điều này, chúng ta sẽ phải thực hiện một chuỗi hành động đã quen thuộc.

Đầu tiên, hãy mở tệp server.js. Tìm mảng handlers và thêm một xử lý GET request nữa vào đó (sau xử lý GET cho sản phẩm). Như bạn thấy, nó gần như giống hệt nhau:

http.get('/fakeServer/sellers', async () => { await delay(ARTIFICIAL_DELAY_MS) return HttpResponse.json(db.seller.getAll()) }),

Chúng ta đã xử lý yêu cầu trên máy chủ. Bước tiếp theo, trong tệp sellersSlice.js, chúng ta cần viết thunk để lấy dữ liệu từ máy chủ. Để làm điều này, hãy nhập clientcreateAsyncThunk vào đó:

import { createSlice, createAsyncThunk } from '@reduxjs/toolkit' import { client } from '../../api/client'

Bây giờ chúng ta sẽ lấy dữ liệu người bán từ máy chủ, vì vậy hãy xóa chúng khỏi initialState, chỉ để lại một cặp ngoặc trống:

const initialState = []

Và sau đó, trước hàm sellersSlice, hãy tạo thunk fetchSellers của chúng ta. Chúng ta sẽ truyền đường dẫn mà chúng ta đã chỉ định trên máy chủ cho client:

export const fetchSellers = createAsyncThunk( 'sellers/fetchSellers', async () => { const response = await client.get('/fakeServer/sellers') return response.data } )

Chúng ta chỉ còn phải tạo một reducer bổ sung cho sellersSlice. Ở đây chúng ta sẽ chỉ giới hạn ở việc xử lý yêu cầu thành công. Tất cả các action được tạo bởi fetchSellers sẽ giống hệt với các action của fetchProducts:

const sellersSlice = createSlice({ name: 'sellers', initialState, reducers: {}, extraReducers(builder) { builder.addCase(fetchSellers.fulfilled, (state, action) => { return action.payload }) }, })

Nhắc lại rằng lần trước khi lấy sản phẩm, chúng ta đã thay đổi giá trị hiện tại của state. Ở đây chúng ta sử dụng một cách hơi khác và chỉ đơn giản trả về một giá trị mới, trong createSlice cũng có thể làm như vậy. Bằng cách đó, chúng ta đạt được hai mục tiêu. Thứ nhất, chúng ta có được dữ liệu, và thứ hai, bây giờ chúng ta có đảm bảo rằng trong danh sách người bán sẽ không có thêm bất cứ thứ gì khác, bởi vì chúng ta đã hoàn toàn ghi đè slice bằng giá trị action.payload.

Hãy mở ứng dụng về sinh viên của bạn. Mở tệp server.js trong đó, thêm một trình xử lý nữa cho GET request của giáo viên vào mảng handlers.

Và bây giờ hãy mở tệp teachersSlice.js. Làm cho initialState trở thành một mảng trống, như đã được hiển thị trong bài học. Trước hàm studentsSlice, hãy viết thunk fetchTeachers.

Trong hàm createSlice, hãy viết bổ sung extra reducer, chỉ giới hạn ở việc xử lý yêu cầu thành cô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