⊗jsrxPmWFDA 18 of 57 menu

action-ის გაგზავნა და useDispatch ჰუკი Redux-ში

ჩვენ უკვე გავაკეთეთ თითქმის ყველა საჭირო ნაწილი Redux აპლიკაციის მუშაობისთვის. დარჩა მხოლოდ ის, რომ გავიგოთ, როგორ გავგზავნოთ action React კომპონენტიდან. დავიწყოთ.

გახსენით ჩვენი პროდუქტების აპლიკაცია. კომპონენტ NewProductForm-ის ფორმაში გვაქვს ღილაკი ახალი პროდუქტის მონაცემების შესანახად. მოდით, მივაბათ მას კლიკის ქოლბეკი. დავუშვათ, რომ მასზე დაწკაპუნებისას გაეშვას ქოლბეკი onSaveProductClick:

<button type="button" onClick={onSaveProductClick}> შენახვა </button>

ახალი პროდუქტის შექმნისას დაგვჭირდება მისთვის ახალი id. ჩვენ მას შევქმნით ყველასთვის ცნობილი ბიბლიოთეკის nanoid-ის დახმარებით. სხვათაშორის, მისი დაყენება არ არის საჭირო, რადგან ის უკვე მოდის RTK პაკეტთან ერთად. დავამატოთ nanoid იმპორტში:

import { nanoid } from '@reduxjs/toolkit'

ასევე გვახსოვს, რომ state-ის შეცვლის ერთადერთი გზა - ეს არის მეთოდი dispatch-ის გამოძახება, რომელიც აქვს store-ს და action-ის ობიექტის გადაცემა. იმისათვის, რომ მივწვდეთ ამ მეთოდს, ჩვენ გამოვიყენებთ React-Redux ჰუკს useDispatch. მოდით, იმპორტირება გავუკეთოთ მას:

import { useDispatch } from 'react-redux'

ფუნქცია NewProductForm-ის კოდში შევქმნათ მისთვის კონსტანტა dispatch მას შემდეგ, რაც ჩვენ შევქმენით კონსტანტები ჩვენი ლოკალური state-ებისთვის:

const dispatch = useDispatch()

ასევე ჩვენ უნდა იმპორტირება გავუკეთოთ action creator-ს productAdded, რომელიც ჩვენ მივიღეთ წინა გაკვეთილზე:

import { productAdded } from './productsSlice'

ახლა ჩვენ შეგვიძლია დავწეროთ თავად ფუნქცია ქოლბეკი onSaveProductClick. გავაკეთოთ ეს ბრძანება return-ის წინ:

const onSaveProductClick = () => {}

ფუნქციის შიგნით ჩვენ ვიძახებთ dispatch-ს, ვქმნით action-ის ობიექტს, ველში payload ჩვენ მოხვდება შექმნილი id, სახელი, აღწერა, ფასი და რაოდენობა პროდუქტის. ყველა ამ მონაცემს ჩვენ ვიღებთ ლოკალური state-ებიდან. ამ შემთხვევაში დასაწყისში ჩვენ ვამოწმებთ პირობაში არის თუ არა ყველა ველი შევსებული - მხოლოდ ამ შემთხვევაში ვიძახებთ dispatch-ს. ბოლოს ფუნქციის კოდში ჩვენ ვაბრუნებთ ლოკალურ state-ებს საწყის მდგომარეობაში:

const onSaveProductClick = () => { if (name && desc && price && amount) { dispatch( productAdded({ id: nanoid(), name, desc, price, amount }) ) setName('') setDesc('') setPrice(0) setAmount(0) } }

ახლა ჩავუშვათ ჩვენი აპლიკაცია, შევიყვანოთ მონაცემები ველებში და დავაწკაპუნოთ ღილაკზე შენახვა. ჰურა, ქვევა გვერდზე გამოჩნდა ახალი პროდუქტი. Redux DevTools-ის გახსნისას, და მასში Inspector-ის ჩანართის, ჩვენ ვხედავთ, რომ მარცხნივ @@INIT-ის გარდა გაჩნდა ჩვენი action products/productAdded. ხოლო მარჯვენა ნაწილში ჩვენ შეგვიძლია დავაწკაპუნოთ Action და State ჩანართებს, გადავრთოთ @@INIT და products/productAdded. ახლა ჩვენ ვხედავთ, რომ ჩვენი ახალი პროდუქტი ემატება. ასევე Action ჩანართზე ჩვენ ვხედავთ action-ს, რომელიც ავტომატურად შეიქმნა createSlice-ის დახმარებით (დააწკაპუნეთ, მაგალითად, Raw-ზე). ჰურა: ჩვენ არ დაგვჭირდა მისი ხელით დაწერა.

გახსენით თქვენი სტუდენტების აპლიკაცია, შემდეგ კი ფაილი NewStudentForm.jsx, მიაბეთ ღილაკ შენახვას კლიკის ქოლბეკი.

დაწერეთ ყველა საჭირო იმპორტი და დაწერეთ ფუნქცია-ქოლბეკი onSaveStudentClick, გამოიყენეთ მეთოდი dispatch როგორც ეს ნაჩვენებია გაკვეთილზე.

ჩაუშვით აპლიკაცია, შეიყვანეთ ველებში მონაცემები და დააწკაპუნეთ ღილაკზე შენახვა. დარწმუნდით, რომ გვერდის ქვევით დაემატა ახალი სტუდენტი.

გახსენით Redux DevTools და გადახედეთ ჩანართებს Action და State, დარწმუნდით, რომ ახალი ობიექტი სტუდენტით ემატება. შეხედეთ action-ის ობიექტს, რომელიც თქვენ შეიქმნა, გამოაგზავნეთ იგი ამ ამოცანის პასუხში.

ქართული
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
ვებსაიტის მუშაობის, ანალიტიკისა და პერსონალიზაციისთვის ვიყენებთ ქუქი-ფაილებს. მონაცემთა დამუშავება ხდება Კონფიდენციალურობის პოლიტიკის შესაბამისად.
ყველას მიღება პარამეტრები უარყოფა