⊗jsrxPmSDSO 36 of 57 menu

Lấy Selector trong Redux

Đôi khi rất hữu ích để loại bỏ mã thừa trong ứng dụng, cũng như đóng gói dữ liệu.

Hãy mở ứng dụng sản phẩm của chúng ta. Hãy chú ý rằng ở một vài nơi trong ứng dụng, chúng ta sử dụng selector để lấy slice sản phẩm để thực hiện một số hành động với nó.

Bây giờ chúng ta sẽ mở productsSlice.js, cuộn xuống cuối file và thêm một vài dòng mã, trong đó chúng ta viết hai selector và export chúng. Một hàm sẽ dùng để lấy tất cả sản phẩm:

export const selectAllProducts = (state) => state.products.products

Và sau nó là hàm thứ hai - để lấy một sản phẩm theo id:

export const selectProductById = (state, productId) => state.products.products.find((product) => product.id === productId)

Tất nhiên bạn có thể có câu hỏi chính đáng - tại sao chúng ta lại có cấu trúc lồng nhau như vậy: state.products.products? Câu trả lời rất đơn giản, chúng ta đã thay đổi cấu trúc slice trong bài học trước và giờ đây các sản phẩm của chúng ta sẽ nằm dưới dạng mảng trong một thuộc tính riêng biệt products của slice sản phẩm state.products (hãy nhớ rằng ở đây state - là đối tượng gốc trạng thái Redux, chứa tất cả slice).

Như vậy chúng ta chỉ đơn giản di chuyển mã cho các hàm selector đến một nơi duy nhất trong ứng dụng và bây giờ chúng ta cần thực hiện các thay đổi tương ứng ở những nơi đã sử dụng chúng. Hãy bắt đầu với file ProductsList.jsx. Import vào đó selectAllProducts, vì ở đây chúng ta cần lấy tất cả sản phẩm:

import { selectAllProducts } from './productsSlice'

Và ở đầu mã của hàm ProductsList, hãy thay thế:

const products = useSelector((state) => state.products)

Bằng dòng:

const products = useSelector(selectAllProducts)

Bây giờ hãy chuyển sang file ProductPage.jsx. Ở đây chúng ta cần một sản phẩm theo id. Hãy thay thế dòng (đừng quên import):

const product = useSelector((state) => state.products.find((product) => product.id === productId) )

Bằng:

const product = useSelector((state) => selectProductById(state, productId))

Hãy tự thực hiện thay thế tương tự trong file EditProductForm.jsx. Ở đây chúng ta cũng cần một sản phẩm theo id.

Hãy nhớ rằng, việc tối ưu hóa như vậy chỉ dành cho sự tiện lợi của bạn và bạn có thể thực hiện nó khi bạn cảm thấy cần thiết và thuận tiện. Trong ví dụ của chúng ta, hãy tưởng tượng rằng chúng ta viết mã cho hàm-selector mỗi lần ở những nơi khác nhau, và sau đó chúng ta thay đổi cấu trúc state, và khi đó sẽ phải sửa nó trong tất cả các component.

Hãy mở ứng dụng quản lý sinh viên của bạn. Mở file studentsSlice.js trong đó. Ở cuối file, hãy viết và export, như đã được trình bày trong bài học, hai selector cho việc lấy tất cả sinh viên selectAllStudents và để lấy một sinh viên theo id selectStudentById.

Bây giờ hãy import selectAllStudentsselectStudentById vào các file StudentsList.jsx, StudentPage.jsxEditStudentForm.jsx, thực hiện các thay đổi tương ứng trong các file này, như đã trình bày trong bài học.

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