Introduction β
Store Π²ΡΡΡ
Webitel Applications ΠΏΡΠ°ΡΡΡ (Π°Π±ΠΎ, ΠΏΡΠΈΠ½Π°ΠΉΠΌΠ½Ρ, ΠΌΠ°Ρ ΠΏΡΠ°ΡΡΠ²Π°ΡΠΈ π) Π½Π° Vuex-ΠΌΠΎΠ΄ΡΠ»ΡΡ
, ΡΠΊΡ ΡΡΠ²ΠΎΡΡΡΡΡΡΡ Π·Π° Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΠΎΡ ΡΠΏΠ΅ΡΡΠ°Π»ΡΠ½ΠΈΡ
ΠΌΠ΅ΡΠΎΠ΄ΡΠ² (Π½Π°ΠΏΡΠΈΠΊΠ»Π°Π΄, createBaseStoreModule), Π°Π±ΠΎ ΠΊΠ»Π°ΡΡΠ² (Π½Π°ΠΏΡΠΈΠΊΠ»Π°Π΄, BaseStoreModule, Π°Π»Π΅ Π²ΠΎΠ½ΠΈ @deprecated).
ΠΡΠ΄ ΠΊΠΎΠΆΠ΅Π½ ΡΠΈΠΏΠΎΠ²ΠΈΠΉ ΠΊΠ΅ΠΉΡ ΡΠΈΡΡΠ΅ΠΌΠΈ (ΡΠ°Π±Π»ΠΈΡΠΊΠ° ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ, ΠΊΠ°ΡΡΠΎΡΠΊΠ° ΡΡΡΠ½ΠΎΡΡΡ, Π°ΠΏΡ) Ρ ΠΎΠΊΡΠ΅ΠΌΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ ΡΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»Ρ. Π―ΠΊΡΠΎ ΠΆ ΠΊΠ΅ΠΉΡ Π½Π΅ΡΠΈΠΏΠΎΠ²ΠΈΠΉ, ΡΠΎ ΠΊΡΠ°ΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π²ΠΈΠΊΠΎΡΠΈΡΡΠ°ΡΠΈ createBaseStoreModule, ΠΎΡΠΊΡΠ»ΡΠΊΠΈ Ρ Π½ΡΠΎΠΌΡ Π»Π΅ΠΆΠ°ΡΡ Π΄Π΅ΡΠΎΠ»ΡΠ½Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π΄Π»Ρ Π·ΡΡΡΠ½ΠΎΡ ΡΠΎΠ±ΠΎΡΠΈ Π· Π±ΡΠ΄Ρ-ΡΠΊΠΈΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ.
ΠΠ»Ρ ΡΠΎΠ±ΠΎΡΠΈ Π·Ρ ΡΡΠΎΡΠΎΠΌ ΡΠΈΠΏΠΎΠ²ΠΈΡ
ΠΊΠ΅ΠΉΡΡΠ² Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°Ρ
ΡΠ°ΠΊΠΎΠΆ Ρ composables, ΡΠΊΡ Π΄ΠΎΠ·Π²ΠΎΠ»ΡΡΡΡ Π»Π΅Π³ΠΊΠΎ Π²Π·Π°ΡΠΌΠΎΠ΄ΡΡΡΠΈ Π·Ρ ΡΡΠΎΡΠΎΠΌ (Π½Π°ΠΏΡΠΈΠΊΠ»Π°Π΄, useTableStore).
ΠΡΡ (ΠΌΠ°ΠΉΠΆΠ΅) Π½Π΅ΠΎΠ±Ρ
ΡΠ΄Π½Ρ ΡΠ΅ΡΡ Π΄Π»Ρ ΡΠΎΠ±ΠΎΡΠΈ Π·Ρ ΡΡΠΎΡΠΎΠΌ ΠΌΠΎΠΆΠ½Π° ΡΠΌΠΏΠΎΡΡΡΠ²Π°ΡΠΈ Π· @webitel/ui-sdk/store.
import { createBaseStoreModule, useTableStore } from '@webitel/ui-sdk/store';In-depth β
ΠΠΎΠ»ΠΈ ΠΌΠΈ Π²ΠΈΠΊΠ»ΠΈΠΊΠ°ΡΠΌΠΎ create...StoreModule, Π² ΡΠΊΠΈΠΉ ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π½Π°ΡΡ ΠΊΠ°ΡΡΠΎΠΌΠ½Ρ state, actions, etc., Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡΡ Π»Π°Π½ΠΊΠ° ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ ΡΡΡΠ°ΡΡ
ΡΡ ΡΡΠΎΡΡΠ², ΠΏΠΎΡΠΈΠ½Π°ΡΡΠΈ Π²ΡΠ΄ baseStoreModule, Ρ Π΄Π°Π»Ρ, Π·Π° ΠΏΠ΅Π²Π½ΠΎΡ ΡΡΡΠ°ΡΡ
ΡΡΡ.
Π’Π°ΠΌ Π²ΡΠ΅ Π΄ΠΎΠ²ΠΎΠ»Ρ ΠΏΡΠΎΡΡΠΎ: Π²ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡΡ "Π²Π½ΠΈΠ·" ΠΏΠΎ ΡΡΡΠ°ΡΡ ΡΡ, Ρ Π² ΠΊΡΠ½ΡΡ Π²ΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΌΠ΅ΡΠ΄ΠΆΠΈΡΡΡΡ ΠΌΡΠΆ ΡΠΎΠ±ΠΎΡ, Π· ΠΏΡΠΈΠΎΡΡΡΠ΅ΡΠΎΠΌ "Π²ΠΈΡΠΎΠ³ΠΎ", ΡΠΎΠ±ΡΠΎ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎΠ³ΠΎ "ΠΏΡΠ·Π½ΡΡΠ΅".
Π’Π°ΠΊΠΎΠΆ, Π²Π°ΠΆΠ»ΠΈΠ²ΠΎ: β
State ΠΠ ΠΊΠΎΠΏΡΡΡΡΡΡΡ. ΠΡΠ΄ΠΏΠΎΠ²ΡΠ΄Π½ΠΎ, ΠΏΡΠΈ ΠΊΠΎΠΆΠ½ΠΎΠΌΡ ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ ΠΊΠ°ΡΡΠΎΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Π² Π΄Π΅ΠΊΡΠ»ΡΠΊΠΎΡ ΠΊΠ΅ΠΉΡΠ°Ρ ΡΡΠ΅Π±Π° ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΠΈ ΠΎΠΊΡΠ΅ΠΌΠΈΠΉ, Π½ΠΎΠ²ΠΈΠΉ, ΠΎΠ±ΚΌΡΠΊΡ state Π² ΠΊΠΎΠΆΠ΅Π½ ΠΊΠ΅ΠΉΡ - ΡΠΎΠΌΡ ΡΠΎ ΡΠ½Π°ΠΊΡΠ΅ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΚΌΡΠΊΡ ΠΌΡΠΆ Π²ΡΡΠΌΠ° ΡΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ, ΡΠΊΠΈΠΉ Π±ΡΠ΄Π΅ ΠΌΡΠΆ Π½ΠΈΠΌΠΈ ΡΠ΅ΠΉΡΠΈΡΠΈΡΡ. ΠΠ°ΠΏΡΠΈΠΊΠ»Π°Π΄, ΠΌΠΈ Ρ ΠΎΡΠ΅ΠΌΠΎ ΡΡΠ²ΠΎΡΠΈΡΠΈ ΡΠ²ΠΎΡ ΠΎΠ±Π³ΠΎΡΡΠΊΡ ΡΡΠΎΡΠ° Π΄Π»Ρ ΠΏΠ΅ΡΠΌΡΡΠ΅Π½ΡΠ², ΡΠΊΡ ΠΌΠΈ Π±ΡΠ΄Π΅ΠΌΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ Ρ ΠΊΠΎΠΆΠ½ΡΠΉ ΡΡΡΠ½ΠΎΡΡΡ, ΡΠΊΠ° ΠΌΠ°Ρ Π² ΡΠΎΠ±Ρ ΠΏΠ΅ΡΠΌΡΡΠ΅Π½ΠΈ. Π―ΠΊΡΠΎ ΠΌΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΠΌΠΎ ΠΎΠ΄ΠΈΠ½ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΠΎΠ±ΚΌΡΠΊΡ state Π² ΠΊΠΎΠΆΠ΅Π½ ΠΌΠΎΠ΄ΡΠ»Ρ, ΡΠΎ ΠΏΡΠΈ Π·ΠΌΡΠ½Ρ ΡΡΠ΅ΠΉΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌΡ ΠΌΠΎΠ΄ΡΠ»Ρ, Π²ΡΠ½ ΠΌΡΠ½ΡΡΠΈΠΌΠ΅ΡΡΡΡ Ρ ΡΠ½ΡΠΈΡ .
State ΠΌΠ΅ΡΠ΄ΠΆΠΈΡΡΡΡ Π³Π»ΠΈΠ±ΠΎΠΊΠΎ. Π’ΠΎΠ±ΡΠΎ, ΠΌΠ΅ΡΠ΄ΠΆΠΈΡΡΡΡ Π½Π°Π²ΡΡΡ Π³Π»ΠΈΠ±ΠΎΠΊΠ° Π²ΠΊΠ»Π°Π΄Π΅Π½ΡΡΡΡ. ΠΠΠ! ΠΠ΅ ΠΌΠ΅ΡΠ΄ΠΆΠ°ΡΡΡΡ ΠΎΠ±ΚΌΡΠΊΡΠΈ, ΡΠΊΡ Π½Π΅ Ρ ΠΎΠ±ΚΌΡΠΊΡΠ°ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΊΠ»Π°Π΄, Π½Π΅ Π·ΠΌΠ΅ΡΠ΄ΠΆΠΈΡΡΡΡ 2 ΠΌΠ°ΠΏΠΈ Π² ΠΎΠ΄Π½Ρ, Π· ΠΊΠ»ΡΡΠ°ΠΌΠΈ Π· ΠΎΠ±ΠΎΡ ΠΌΠ°ΠΏ)
Π―ΠΊ ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΠΎ ΠΊΠΎΡΠΈΡΡΡΠ²Π°ΡΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΡΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ²? β
Π‘ΡΠ²ΠΎΡΠ΅Π½Π½Ρ ΡΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Ρ ΡΡΠ½ΡΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΡΠ² β
// import method
import { createBaseStoreModule } from '@webitel/ui-sdk/store';
// create custom state
const state = {
custom: 'state',
};
// create custom actions
const actions = {
CUSTOM: () => {},
// will override action with name "EXISTING" from baseStoreModule
EXISTING: () => {},
};
// create module
const myModule = createBaseStoreModule({
state,
actions,
});
// export module
export default myModule;Π―ΠΊ ΡΡΠ²ΠΎΡΠΈΡΠΈ Π½ΠΎΠ²ΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ β
// createCustomStoreModule.js
// import base method
import { createBaseStoreModule } from '@webitel/ui-sdk/store';
// create custom state, use method to prevent sharing same state object between customStoreModule usages
const customState = () => ({
custom: 'state',
});
const createCustomStoreModule = (modules) => {
// modules can accept arrays
const modulesArr = Array.isArray(modules) ? modules : [modules];
// createBaseStoreModule
return createBaseStoreModule([
// customStoreModule specifics
{ state: customState() },
// + some extensions, passed as arguments
...modulesArr,
]);
};Π©ΠΎ Ρ Π½Π°Ρ ΡΡΡ Ρ? β
ΠΠ° ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΠΏΠΈΡΠ°Π½Π½Ρ Π΄ΠΎΠΊΠΈ:
createBaseStoreModule- Π±Π°Π·ΠΎΠ²ΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ ΡΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»Ρ, ΡΠΊΠΈΠΉ ΠΌΠ°Ρ Π² ΡΠΎΠ±Ρ Π΄Π΅ΡΠΎΠ»ΡΠ½Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π΄Π»Ρ ΡΠΎΠ±ΠΎΡΠΈ Π·Ρ ΡΡΠΎΡΠΎΠΌ.createTableStoreModule+useTableStoreModule- ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ ΡΡΠΎΡΠ° Π΄Π»Ρ ΡΠ°Π±Π»ΠΈΡΡ ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ, ΡΠ° ΠΊΠΎΠΌΠΏΠΎΡΠ·Π°Π±Π» Π΄Π»Ρ ΡΠ½ΡΠ΅Π³ΡΠ°ΡΡΡ Π· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ.createCardStoreModule+useCardStoreModule- ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ ΡΡΠΎΡΠ° Π΄Π»Ρ ΠΊΠ°ΡΡΠΎΡΠΊΠΈ ΡΡΡΠ½ΠΎΡΡΡ, + ΠΊΠΎΠΌΠΏΠΎΡΠ·Π°Π±Π».createApiStoreModule- ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ ΡΡΠΎΡΠ° Π΄Π»Ρ Π°ΠΏΡ, ΡΠΊΠΈΠΉ Π²ΠΆΠ΅ ΠΌΠ°Ρ Π² ΡΠΎΠ±Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π΄Π»Ρ ΡΠΎΠ±ΠΎΡΠΈ Π· Π°ΠΏΡ.
ΠΠΎΠ»ΠΈ ΡΠΎ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ? β
Π’ΠΈΠΏΠΎΠ²ΠΈΠΉ ΡΠΎΠ·Π΄ΡΠ» β
- Π ΠΎΠ±ΠΈΡΠ΅ ΡΠΊΠ»Π°Π΄Π½ΠΈΠΉ ΡΠΎΠ·Π΄ΡΠ» Π· ΡΠ°Π±Π»ΠΈΡΠ΅Ρ ΡΠ° ΠΊΠ°ΡΡΠΎΡΠΊΠΎΡ ΡΡΡΠ½ΠΎΡΡΡ? ΠΠ°ΠΌ ΡΡΠ΅Π±Π° ΠΌΠ°ΠΉΠΆΠ΅ Π²ΡΠ΅, Π΄ΠΈΠ²ΡΡΡΡΡ how to: Integration between store modules.
Π’ΡΠ»ΡΠΊΠΈ ΡΠ°Π±Π»ΠΈΡΠΊΠ° β
Π ΠΎΠ±ΠΈΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΡΠ°Π±Π»ΠΈΡΠΊΡ? ΠΠ΅ΡΠ΅ΡΠ΅ createTableStoreModule Π΄ΠΎΠΊΠ° ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΡΡΠΎΡΠ°, i ΠΊΠΎΠΌΠΏΠΎΡΠ·Π°Π±Π» `useTableStoreModuleΡ Π΄Π»Ρ ΡΠ½ΡΠ΅Π³ΡΠ°ΡΡΡ Π· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ.
Π’ΡΠ»ΡΠΊΠΈ ΠΊΠ°ΡΡΠΎΡΠΊΠ° β
Π ΠΎΠ±ΠΈΡΠ΅ ΡΡΠ»ΡΠΊΠΈ ΠΊΠ°ΡΡΠΎΡΠΊΡ? Π¦Π΅ Π½Π΅ ΡΠΎΡΠ½ΠΎ, ΡΠΎ Π²Π°ΠΌ Π·Π½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ, Π°Π»Π΅ ΠΏΡΠΈΠ΄ΠΈΠ²ΡΡΡΡΡ Π΄ΠΎ createCardStoreModule Π΄ΠΎΠΊΠ°.
ΠΠΏΡ β
ΠΠ΅ΠΎΠ±Ρ
ΡΠ΄Π½ΠΎ ΠΏΡΠ΄ΚΌΡΠ΄Π½Π°ΡΠΈ api Π΄ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π· ΠΏΠΎΠΏΠ΅ΡΠ΅Π΄Π½ΡΡ
ΠΊΠ΅ΠΉΡΡΠ²? ΠΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠΉΡΠ΅ Π²ΠΆΠ΅ ΡΠ½ΡΠ΅Π³ΡΠΎΠ²Π°Π½ΠΈΠΉ Π² Π½ΠΈΡ
createApiStoreModule Π΄ΠΎΠΊΠ°.
Π¨ΠΎΡΡ ΡΠ²ΠΎΡ β
Π₯ΠΎΡΠ΅ΡΠ΅ Π·ΡΠΎΠ±ΠΈΡΠΈ ΡΠΎΡΡ ΡΠ²ΠΎΡ? ΠΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠΉΡΠ΅ createBaseStoreModule Π΄ΠΎΠΊΠ°.