🍍 Pinia - bevezetĂ©s

🍍 Pinia - bevezetĂ©s

Pinia bemutatĂł

A Pinia eredetileg egy kĂ­sĂ©rlet volt, hogy megmutassa, milyen lehet egy ĂĄllapotkezelƑ, amely a Composition API-ra Ă©pĂŒl. AzĂłta azonban olyan fejlettĂ© vĂĄlt, hogy a Vue 3 alapĂ©rtelmezett ĂĄllapotkezelƑ könyvtĂĄrakĂ©nt ismert.

Ez a könyvtĂĄr szĂĄmos elƑnnyel rendelkezik, pĂ©ldĂĄul tĂ­pusbiztossĂĄggal, komponens alapĂș architektĂșrĂĄval, skĂĄlĂĄzhatĂłsĂĄggal, aszinkron mƱveletek tĂĄmogatĂĄsĂĄval Ă©s alapĂ©rtelmezett integrĂĄciĂłval a Vue Devtools-ba.

Telepítés

Ha telepĂ­teni szeretnĂ©d a Pinia-t, nem kell aggĂłdnod, mert nagyon egyszerƱ a folyamat. ElƑször generĂĄlj egy Ășj Vue 3 projektet a npm init vue@latest paranccsal. EzutĂĄn telepĂ­tsd fel a Pinia-t a npm install pinia parancs segĂ­tsĂ©gĂ©vel, majd telepĂ­tsd a projekt fĂŒggƑsĂ©geit a npm install parancs futtatĂĄsĂĄval. VĂ©gĂŒl regisztrĂĄld a Pinia-t middleware fĂŒggvĂ©nykĂ©nt az alkalmazĂĄsodba.

 

Mappa struktĂșra

A mappa struktĂșra tekintetĂ©ben a következƑt javaslom: src/stores/store.js. Fontos megjegyezni, hogy egy alkalmazĂĄsban több store is lehet, attĂłl fĂŒggƑen, hogy mennyire szeretnĂ©d szeparĂĄlni Ƒket. PĂ©ldĂĄul lehetne egy TaskStore Ă©s egy UserStore.

A store definiĂĄlĂĄsĂĄhoz importĂĄlnod kell a defineStore fĂŒggvĂ©nyt a Pinia-bĂłl. A defineStore elsƑ argumentuma a store neve, a mĂĄsodik argumentum pedig egy objektum, amely tartalmazza a state-et, gettereket Ă©s action-öket. ExportĂĄld ki a store-t egy vĂĄltozĂłkĂ©nt, hogy hasznĂĄlni tudd azt a Vue komponensekben.

State

A state egyszerƱen egy objektum, amelyben tĂĄrolĂłdik az aktuĂĄlis ĂĄllapot. Ezt a state-et az egĂ©sz alkalmazĂĄson belĂŒl elĂ©rheted. KĂ©pzeld el Ășgy, mint a Vue 2-ben a data tulajdonsĂĄgot.

PĂ©ldakĂ©nt mutatok egy listĂĄzĂĄsra vonatkozĂł kĂłdrĂ©szletet. ElƑször importĂĄld be a useTaskStore store-t a komponensedbe, majd a setup fĂŒggvĂ©nyben rendeld hozzĂĄ egy vĂĄltozĂłhoz, pĂ©ldĂĄul taskStore.

Ebben a vĂĄltozĂłban mĂĄr elĂ©rhetƑek a state-ben talĂĄlhatĂł adatok, pĂ©ldĂĄul a tasks, valamint a getterekben talĂĄlhatĂł fĂŒggvĂ©nyek is.

Actions

Az actions azonos feladatot lĂĄt el, mint a Vuex-ben talĂĄlhatĂł actions Ă©s mutations. Ez azt jelenti, hogy ez az egyetlen mĂłdja az ĂĄllapot mĂłdosĂ­tĂĄsĂĄnak. Szerintem ez sokkal egyszerƱbb Ă©s hasznĂĄlhatĂłbb. Az actions-öket hasznĂĄlhatod az ĂĄllapot frissĂ­tĂ©sĂ©re vagy adatok lekĂ©rĂ©sĂ©re egy kĂŒlsƑ API-bĂłl, majd az ĂĄllapot frissĂ­tĂ©sĂ©re.

Az actions-öket a Vuex-hoz kĂ©pest az alĂĄbbi mĂłdon hasznĂĄlhatnĂĄd (mutation-ök segĂ­tsĂ©gĂ©vel). A Pinia leegyszerƱsĂ­ti ezt a folyamatot, Ă­gy nem szĂŒksĂ©ges az extra lĂ©pĂ©s.

PĂ©lda egy action-re: bemutatok egy egyszerƱ formot, amely a Pinia store-t hasznĂĄlja a feladatok mentĂ©sĂ©hez. Az Ʊrlap elkĂŒldĂ©sekor a handleSubmit fĂŒggvĂ©ny hĂ­vĂłdik meg, amely ellenƑrzi, hogy van-e Ă©rtĂ©ke az inputnak, Ă©s ha van, meghĂ­vja a store addTask fĂŒggvĂ©nyĂ©t, amely egy objektumot vĂĄr paramĂ©terkĂ©nt.

Getters

A getters fĂŒggvĂ©nyeket az adatok manipulĂĄlĂĄsĂĄra hasznĂĄljuk. PĂ©ldĂĄul, ha van egy feladatok tömbĂŒnk, Ă©s szeretnĂ©nk lekĂ©rdezni belƑle a kedvenc feladatokat vagy az összes feladat szĂĄmĂĄt, akkor a getters fĂŒggvĂ©nyeket hasznĂĄlhatjuk. Ezek a getters-ek gyakorlatilag olyanok, mint a szĂĄmĂ­tott tulajdonsĂĄgok.

PĂ©lda egy getter-re: egyszerƱen Ășgy hasznĂĄlhatod, mintha a state-t kĂ©rdeznĂ©d le, Ă©s hivatkozhatsz egy getter-re az adott store-bĂłl.

Devtools 

A Pinia Devtools hasznĂĄlatĂĄhoz telepĂ­tsd fel a bƑvĂ­tmĂ©nyt a Chrome böngĂ©szƑdbe a következƑ linken: Pinia Devtools.

LehetƑvĂ© teszi a fejlesztƑk szĂĄmĂĄra, hogy könnyen kövessĂ©k Ă©s elemezzĂ©k az alkalmazĂĄs ĂĄllapotĂĄt, illetve nyomon kövessĂ©k az ĂĄllapotvĂĄltozĂĄsokat Ă©s azok következmĂ©nyeit.

Az ĂĄllapotfa hasznĂĄlatĂĄval a state-k mĂłdosĂ­thatjuk, Ă­gy könnyedĂ©n tesztelhetƑek az alkalmazĂĄsok. EzenkĂ­vĂŒl lehetƑsĂ©get nyĂșjt a mƱveletek idƑbeli elemzĂ©sĂ©re Ă©s a közvetlen idƑutazĂĄsra, ami nagyon hasznos lehet a hibakeresĂ©s sorĂĄn.

 

DokumentĂĄciĂł 

Ha tovĂĄbbi infĂłkat szeretnĂ©l megtudni a Pinia mƱködĂ©sĂ©rƑl, akkor nagyon hasznos tud lenni a hivatalos dokumentĂĄciĂłja

https://pinia.vuejs.org/

Török Ádåm

Török Ádåm

FejlesztƑ