⊗jsrxPmWFRs 12 of 57 menu

Redux даги редьюсерлар

Ўтган дарсда биз функция ёрдамида createSlice маҳсулотлар учун слайс products ва store да сақланадиган бу слайсни янгилайдиган редьюсер яратдик. Яна бир бор эслатиб ўтай, Redux да стейт маълумотлари редьюсерлар ёрдамида ўзгартирилади.

Эсда тутингки, редьюсерларга бир нечта чекловлар қўйилган. Редьюсер фақатгина олинган қийматлар - жорий стейт ва action объекти асосидагина стейтни янгилайди, сўнгра стейтни қандай ўзгартиришни ҳал қилиб, унинг янги қийматини қайтаради.

Биз JavaScript да объект ва массивлар сунгги учун мутабель (ўзгартирилиши мумкин) эканини биламиз. Шунингдек, биз state ни тўғридан-тўғри ўзгартириб бўлмайди, бундай ҳолда фақат нусхалар билан ишлаш кереклигини биламиз. Редьюсер ҳам ўша қоидага бўйинсуши керак. Аммо бундай мантиқни қўлда ёзиш жуда ҳам чарчатиш ва қийин иш бўлиши мумкин, ва ўша ерда createSlice функцияси ёрдамга келади, у Immer кутубхонасидан фойдаланади, сизнинг 'мутабел' кодингизни 'номутабел' га айлантиради. Шу сабабли, гуноҳ қилиш ва ҳаётни соддалаштириш фақат createSlice ёки createReducer функцияларини ишлатгандагина мумкин.

Редьюсернинг чекловларига асинхрон мантиқни ишлатиш, тасодифий қийматларни ҳисоблаш ва бошқа "yon ta'sirlar" ни бажариш ҳам киради. Энди, редьюсер билан яқиндан танишганимиздан сўнг, маҳсулотлар билан ишлаётган иловамизга қайтамиз.

Иловамизда ўтган дарсларда яратган store мавжуд, аммо ҳозирча унда ҳеч нарса йўқ. Келинг, store.js файлимизни очайлик ва унга озгина код қўшайлик. Бошлаш учун унга маҳсулотлар учун reducer функциясини импорт қиламиз:

import productsReducer from '../parts/products/productsSlice'

Энди биз редьюсер сифатида импорт қилинган productsReducer функциясини кўрсатишимиз мумкин:

export default configureStore({ reducer: { products: productsReducer } })

Юқоридаги сатр бизнинг store га дейдики, энди action пайдо бўлганда state.products слайси учун барча маълумотлар productsReducer редьюсери томонидан янгиланади.

Энди сиз иловани ишга туширишингиз мумкин (эътибор беринг, консолда нотўғри редьюсер ҳақидаги огоҳлантириш йўқолди!), браузерда Redux DevTools ни очинг ва унинг варақлари атрофида қзиб кўринг. Масалан, Inspector даги State варақчасини босганда, биз иловани биринчи марта ишга туширганда стейтнинг бошланғич қиймати сифатида чиқип кетган иккита маҳсулот объектини кўришимиз мумкин. Log monitor варақчасида биз глобал стейтнинг қандай слайсларга эга эканини кўрамиз - бу products слайси, иккита объектни ўз ичига олган. Шунингдек, Chart варақчасига ҳам назар солинг.

Ўқувчилар билан ишлаётганингиз иловани очинг ва store.js файли кодини дарсда кўрсатилганидек ўзгартиринг.

Браузерда иловангизни ишга туширинг ва Redux DevTools кенгайтмасининг варақлари атрофида қзиб кўринг.

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