⊗jsrxPmRDARR 32 of 57 menu

Redux යෙදුමට reducer එකතු කිරීම

පෙර පාඩමේදී, අපි සෑම නිෂ්පාදනයකටම පරිශීලක ප්‍රතික්‍රියා තිබීම සඳහා UserReaction සංරචකය නිර්මාණය කළෙමු. දැන් අපට පරිශීලකයා එක් එක් ප්‍රතික්‍රියා බොත්තම මත ක්ලික් කරන විට ප්‍රතික්‍රියා ගණන් කාරකය සකසන reducer එකක් ලිවිය යුතුය.

අපි අපගේ නිෂ්පාදන යෙදුම විවෘත කරමු, එහි සියලුම reducers අඩංගු productsSlice.js ගොනුව විවෘත කරමු. දැන් reducers ගුණාංගය තුළ තවත් reducer එකක් වන reactionClicked නිර්මාණය කරමු (අපට එය productAdded ට පෙර, පළමු ස්ථානයේ තැබිය හැකිය - නමුත් එය වැදගත් නොවේ). සුපුරුදු පරිදි, එයට පරාමිති ලෙස state සහ action සම්ප්‍රේෂණය කරමු:

reactionClicked(state, action) {},

දැන් අපි පෙර පියවරේදී හිස්ව තැබූ සුළු වරහන් තුළ, ඒ සඳහා කේතය ලියමු. පළමුවෙන්ම, අපි action වස්තුවේ payload වලින් නිෂ්පාදනයේ id සහ ප්‍රතික්‍රියාවේ නම උකහා ගනිමු:

const { productId, reaction } = action.payload

ඉන්පසු සම්ප්‍රේෂණය කළ state වලින් අවශ්‍ය නිෂ්පාදනය ලබා ගනිමු:

const currentProduct = state.find(product => product.id === productId)

එවැනි නිෂ්පාදනයක් තිබේ නම්, සම්ප්‍රේෂණය කළ ප්‍රතික්‍රියාවේ අගය 1 කින් වැඩි කරමු:

if (currentProduct) { currentProduct.reactions[reaction]++ }

ඒ තරම්ය, අපගේ reactionClicked සඳහා වන කේතය සූදානම්:

reactionClicked(state, action) { const { productId, reaction } = action.payload const currentProduct = state.find(product => product.id === productId) if (currentProduct) { currentProduct.reactions[reaction]++ } },

දැන් ගොනුවේ අවසානයේ, ලබාගත් action creator අපනයනය කරමු:

export const { reactionClicked, productAdded, productUpdated } = productsSlice.actions

මෙහිදී වැදගත් කරුණු දෙකක් සලකන්න. පෙර පාඩම් වලින් ඔබට මතකව ඇති පරිදි - reducer කේතය තුළ සෘජුව අගය යාවත්කාලීන කිරීමට නොහැකිය (මෙම පේළිය දෙස බලන්න: reactions[reaction]++), නමුත් අපට මෙය කරගත හැකිය, මන්ද අපි එය Immer පුස්තකාලය භාවිතා කරන createSlice තුළදී කරන බැවිනි. එය අපගේ කේතය "ආරක්ෂිත" යාවත්කාලීනයක් බවට පරිවර්තනය කිරීම සඳහා සැලකිල්ලෙන් කටයුතු කරයි. මෙයඅපට සංකීර්ණ දේවල් සරල ආකාරයෙන් ලිවීමට ඉඩ සලසයි.

මතක තබාගත යුතු ඊළඟ කාරණය නම් action වස්තුවේ අවම වශයෙන් හැකි තොරතුරු ප්‍රමාණය අඩංගු විය යුතුය - කුමක් සිදු වුණේදැයි දක්වා ඇති තොරතුරු පමණි. එහි කිසිදු ගණනය කිරීම් කිරීම සුදුසු නොවේ. state යාවත්කාලීන කිරීම සඳහා සියලු ගණනය කිරීම් reducer තුළ කළ යුතුය, මෙහිදී එය සඳහා අවශ්‍ය තරම් තර්කනය ලිවිය හැකිය.

ඔබගේ ශිෂ්‍ය යෙදුම විවෘත කර studentsSlice.js ගොනුවේ reducers ක්ෂේත්‍රයට පාඩමේ දක්වා ඇති පරිදි තවත් reducer එකක් වන voteClicked එකතු කරන්න. ඒ සඳහා කේතය ලියන්න. ඔබගේ reducer හි කාර්යය වන්නේ - ක්ලික් කළ විට, එම ශිෂ්‍යයා සඳහා ක්ලික් කළ vote (හෝ ඡන්ද) හි අගය 1 කින් වැඩි කිරීමයි.

ගොනුවේ අවසානයේ, ලබාගත් action creator voteClicked අපනයනය කිරීමට අමතක නොකරන්න.

සිංහල
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ʻzbekTiếng Việt
අපි වෙබ් අඩවිය ක්‍රියාත්මක කිරීම, විශ්ලේෂණය සහ පුද්ගලීකරණය සඳහා කුකී භාවිතා කරමු. දත්ත සැකසීම සිදුකරනු ලබන්නේ ගෝපනීයතා ප්‍රතිපත්තිය අනුව ය.
සියල්ල පිළිගන්න කොන්දේසි ප්‍රතික්ෂේප කරන්න