⊗jsrxPmSDSO 36 of 57 menu

Добијање селектора у Redux-у

Понекад је врло корисно ослободити се непотребног кода у апликацији, као и инкапсулирати податке.

Отворимо нашу апликацију са производима. Обратите пажњу да на неколико места апликације ми, користећи селекторе, извлачимо слајс са производима да бисмо с њим извршили неке акције.

А сада ћемо отворити наш productsSlice.js, спустити се на крај фајла и додати пар линија кода, у којима ћемо написати два селектора и извезати их. Једна функција ће нам бити за добијање свих производа:

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

А после ње друга - за добијање једног производа по id:

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

Наравно може вам наћи на ум праведно питање - одакле нам такав наврат: state.products.products? Одговор је једноставан, ми смо на прошлом часу променили структуру слајса и сада ће наши производи бити на располагању у виду низа у засебном својству products слајса производа state.products (запамтите да овде state представља коренов објекат стања Redux-а, који садржи све слајсове).

На тај начин смо једноставно преместили код за функције-селекторе на једно место у апликацији и сада треба да унесемо одговарајуће измене тамо, где смо их користили. Почнимо са фајлом ProductsList.jsx. И увезимо у њега selectAllProducts, пошто нам овде треба да добијемо све производе:

import { selectAllProducts } from './productsSlice'

И на почетку кода функције ProductsList, заменимо:

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

Са линијом:

const products = useSelector(selectAllProducts)

А сада идемо на фајл ProductPage.jsx. Овде нам је био потребан производ по id. Направимо замену линије (не заборавите на увоз):

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

Са:

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

Направите сами такву замену у фајлу EditProductForm.jsx. Овде нам такође треба производ по id.

Запамтите да таква оптимизација служи само за вашу погодност и можете је урадити онда, кад то сматрате потребним и погодним. А на нашем примеру замислите да бисмо писали код функције-селектора сваки пут у различитим местима, а онда бисмо променили структуру стања, и морали бисмо га онда исправљати у свим компонентама.

Отворите вашу апликацију са студентима. Отворите у њој фајл studentsSlice.js. На самом дну фајла напишите и извезите, како је показано на часу, два селектора за добијање свих студената selectAllStudents и за добијање једног студента по id selectStudentById.

Сада увезите selectAllStudents и selectStudentById у фајлове StudentsList.jsx, StudentPage.jsx и EditStudentForm.jsx, унесите у тим фајловима одговарајуће измене, како је показано на часу.

Српски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј