⊗jsrxPmSDSO 36 of 57 menu

Mendapatkan Pemilih dalam Redux

Kadang-kadang sangat berguna untuk menghilangkan kod yang berlebihan dalam aplikasi, dan juga untuk mengkapsulkan data.

Mari buka aplikasi produk kami. Perhatikan bahawa di beberapa tempat aplikasi, kami menggunakan pemilih untuk mengambil slice produk untuk melakukan beberapa tindakan terhadapnya.

Sekarang, mari buka productsSlice.js kami, tatal ke akhir fail dan tambahkan beberapa baris kod di mana kami akan menulis dua pemilih dan eksportnya. Satu fungsi akan untuk mendapatkan semua produk:

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

Dan selepas itu, yang kedua - untuk mendapatkan satu produk mengikut id:

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

Sudah tentu anda mungkin mempunyai soalan yang wajar - dari mana datangnya kekusutan seperti ini: state.products.products? Jawapannya mudah, kerana dalam pelajaran lepas kami menukar struktur slice dan sekarang produk kami akan berada sebagai array dalam properti berasingan products bagi slice produk state.products (ingat, di sini state ialah objek keadaan root Redux yang mengandungi semua slice).

Dengan cara ini, kami hanya memindahkan kod untuk fungsi pemilih ke satu tempat dalam aplikasi dan sekarang kami perlu membuat perubahan yang sesuai di mana kami menggunakannya. Mari mulakan dengan fail ProductsList.jsx. Import ke dalamnya selectAllProducts, kerana di sini kami perlu mendapatkan semua produk:

import { selectAllProducts } from './productsSlice'

Dan pada permulaan kod fungsi ProductsList, gantikan:

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

Dengan baris:

const products = useSelector(selectAllProducts)

Sekarang mari pergi ke fail ProductPage.jsx. Di sini kami memerlukan produk mengikut id. Mari buat penggantian baris (jangan lupa tentang import):

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

Kepada:

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

Buat penggantian yang serupa sendiri dalam fail EditProductForm.jsx. Di sini kami juga memerlukan produk mengikut id.

Ingat, pengoptimuman sedemikian hanyalah untuk kemudahan anda dan anda boleh melakukannya apabila anda menganggapnya perlu dan sesuai. Dan dalam contoh kami, bayangkan jika kami menulis kod fungsi pemilih setiap kali di tempat yang berbeza, dan kemudian menukar struktur keadaan, dan terpaksa membetulkannya dalam semua komponen.

Buka aplikasi pelajar anda. Buka fail studentsSlice.js di dalamnya. Di bahagian paling bawah fail, tulis dan eksport, seperti yang ditunjukkan dalam pelajaran, dua pemilih untuk mendapatkan semua pelajar selectAllStudents dan untuk mendapatkan satu pelajar mengikut id selectStudentById.

Sekarang import selectAllStudents dan selectStudentById ke dalam fail StudentsList.jsx, StudentPage.jsx dan EditStudentForm.jsx, buat perubahan yang sesuai dalam fail-fail ini, seperti yang ditunjukkan dalam pelajaran.

Melayu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Kami menggunakan kuki untuk operasi laman web, analisis dan personalisasi. Pemprosesan data dijalankan mengikut Polisi Kerahsiaan.
terima semua tataletak tolak