@lithium-framework/state
Gestion des États avec Lithium
@lithium-framework/state
fournit une gestion des états puissante et intuitive, permettant de suivre et de réagir aux changements de valeurs de manière efficace. Ce guide explique comment utiliser la classe State
et la fonction createState
pour gérer les états dans vos applications.
Introduction
Lithium propose une gestion d'état élégante basée sur des objets observables. Les états permettent de suivre et de réagir aux changements de manière réactive, simplifiant ainsi la gestion des données dans vos applications.
Installation
Installez Lithium state via npm :
npm install @lithium-framework/state
Utilisation
Initialisation d'un État
Pour initialiser un état, utilisez la classe State
ou la fonction createState
:
import { State, createState } from '@lithium-framework/state';
// Utilisation de la classe State
let state = State.init<number>(0);
// Utilisation de la fonction createState
let [counter, setCounter] = createState<number>(0);
Souscription aux Changements d'État
Vous pouvez souscrire aux changements d'état pour réagir aux modifications de valeur :
// Souscrire aux changements d'état avec la classe State
state.subscribe((newValue) => {
console.log('Nouvelle valeur:', newValue);
});
// Souscrire aux changements d'état avec createState
counter.subscribe((newValue) => {
console.log({ newValue });
});
// Mettre à jour l'état
setCounter(counter.value + 1);
Historique des États
Lithium maintient un historique des valeurs d'état, permettant de suivre les changements successifs :
state.value = 1;
state.value = 2;
// Affiche les valeurs précédentes, jusqu'à 10 entrées
console.log(state.history);
Mutateurs
Les mutateurs permettent de gérer l'état et de le mettre à jour de manière fluide :
let [ counter, setCounter ] = state.mutator;
setCounter(10); // Met à jour l'état à 10
console.log(counter.value); // Affiche 10
Symbol.toPrimitive
Lithium permet de convertir des objets d'état en valeurs primitives de manière personnalisée :
// Utilise Symbol.toPrimitive pour obtenir la valeur primitive
let primitiveValue = +state;
console.log(primitiveValue);
API de Référence
State<T>
- Propriétés :
value: T
- Obtient ou définit la valeur actuelle de l'état.history: T[]
- Obtient l'historique des valeurs de l'état (jusqu'à 10 entrées).
- Méthodes :
static init<T>(value: T): State<T>
- Initialise un nouvel état avec la valeur spécifiée.subscribe(callback: (newValue: any) => void): void
- Souscrit aux changements de valeur de l'état.mutator: [State<T> & T, (newValue: T) => void]
- Renvoie un tableau contenant l'état et une fonction pour le mettre à jour.
createState<T>(value: T): [State<T> & T, (newValue: T) => void]
Crée un état avec une valeur initiale et renvoie son mutateur.
Exemples Complets
Exemple 1 : Compteur Réactif
import { createState } from '@lithium-framework/state';
let [ counter, setCounter ] = createState<number>(0);
counter.subscribe(( newValue ) => {
console.log('Valeur du compteur:', newValue);
});
setCounter(counter.value + 1); // Incrémente le compteur
Exemple 2 : Historique des États
import { createState } from '@lithium-framework/state';
let [ state , setState ] = createState<number>(0);
setState( 1 );
setState( 2 );
setState( 3 );
console.log(state.history); // Affiche [0, 1, 2]