React-Rock est un package léger pour gérer l'état global dans les applications React. Il simplifie la gestion des données en fournissant un magasin de lignes et de métadonnées, tout en proposant des méthodes pour effectuer des opérations CRUD et bien plus encore. Il permet une intégration facile avec les composants React, ce qui en fait une solution idéale pour gérer des états complexes dans de grandes applications.
Pour installer le package React-Rock, exécutez la commande suivante dans votre projet :
npm install react-rock
Pour créer une nouvelle boutique et ajouter un enregistrement, utilisez la fonction createStore. Voici un exemple :
import { createStore } from 'react-rock'; // Define RowType and MetaType type RowType = { name: string, age: number }; type MetaType = { totalRecords: number }; // Create a store const users = createStore<RowType, MetaType>({ name: '', age: 0 }, { totalRecords: 0 }); // Add a new row to the store users.create({ name: 'John Doe', age: 30 });
Lorsqu'une ligne est créée, elle aura les propriétés suivantes :
type RowType<Row> = Row & { _id: string; // Unique identifier for the row _index: number; // Index of the row in the store _observe: number; // Internal property to track changes }
Chaque ligne comprendra les données d'origine (Row) et quelques propriétés supplémentaires telles que _id, _index et _observe.
Voici un tableau avec toutes les méthodes disponibles et leurs descriptions :
Method | Description |
---|---|
create(row, freeze?) | Adds a new record to the store. Optionally, prevents re-rendering if freeze is true. |
createMany(rows, freeze?) | Adds multiple records to the store. Optionally, prevents re-rendering if freeze is true. |
update(row, where, freeze?) | Updates records based on the condition specified in where. |
updateAll(row, freeze?) | Updates all records in the store. Optionally, prevents re-rendering if freeze is true. |
delete(where, freeze?) | Deletes records based on the condition specified in where. |
move(oldIdx, newIdx, freeze?) | Moves a record from one index to another. |
clearAll(freeze?) | Clears all records from the store. Optionally, prevents re-rendering if freeze is true. |
getAll(args?) | Retrieves all rows from the store. |
find(where, args?) | Finds rows based on a condition specified in where. |
findFirst(where, freeze?) | Finds the first row that matches the condition in where. |
findById(_id, freeze?) | Finds a row by its _id. |
setMeta(key, value, freeze?) | Sets a value for a specific meta key. |
getMeta(key, freeze?) | Retrieves the value of a specific meta key. |
getAllMeta(freeze?) | Retrieves all meta data from the store. |
deleteMeta(key, freeze?) | Deletes a specific meta key. |
clearMeta(freeze?) | Clears all meta data from the store. |
La méthode find vous permet de rechercher des lignes dans le magasin en fonction de conditions spécifiques :
npm install react-rock
React-Rock optimise les re-rendus en proposant un mécanisme de gel. Lorsqu'une mise à jour du magasin se produit et que l'option de gel est activée, les composants React qui accèdent au magasin à l'aide de méthodes telles que find ou findFirst ne seront pas automatiquement restitués. Cela vous permet de contrôler le moment où vos composants doivent être restitués, améliorant ainsi les performances dans les applications volumineuses.
Le WhereType est utilisé pour spécifier des conditions lors de l'interrogation des lignes. Il définit une structure de requête pour filtrer les lignes.
Le QueryValueType est utilisé dans WhereType pour définir les conditions possibles d'interrogation :
Property | Description |
---|---|
contain | Finds values containing the specified string, number, or boolean. |
startWith | Finds values that start with the specified string or number. |
endWith | Finds values that end with the specified string or number. |
equalWith | Finds values that are exactly equal to the specified value. |
notEqualWith | Finds values that are not equal to the specified value. |
gt | Finds values greater than the specified number. |
lt | Finds values less than the specified number. |
gte | Finds values greater than or equal to the specified number. |
lte | Finds values less than or equal to the specified number. |
import { createStore } from 'react-rock'; // Define RowType and MetaType type RowType = { name: string, age: number }; type MetaType = { totalRecords: number }; // Create a store const users = createStore<RowType, MetaType>({ name: '', age: 0 }, { totalRecords: 0 }); // Add a new row to the store users.create({ name: 'John Doe', age: 30 });
ArgsType définit des options pour personnaliser le comportement des requêtes, telles que la sélection de lignes spécifiques ou le saut de lignes.
Property | Description |
---|---|
getRow | Custom function to process rows before returning them. |
skip | Number of rows to skip. |
take | Number of rows to return. |
freeze | If true, prevents re-rendering when accessing the data. |
Pour utiliser le store dans un composant de classe, étendez la classe StoreComponent :
npm install react-rock
import { createStore } from 'react-rock'; // Define RowType and MetaType type RowType = { name: string, age: number }; type MetaType = { totalRecords: number }; // Create a store const users = createStore<RowType, MetaType>({ name: '', age: 0 }, { totalRecords: 0 }); // Add a new row to the store users.create({ name: 'John Doe', age: 30 });
type RowType<Row> = Row & { _id: string; // Unique identifier for the row _index: number; // Index of the row in the store _observe: number; // Internal property to track changes }
React-Rock vous permet de partager le même magasin sur plusieurs composants, garantissant ainsi un état cohérent dans toute l'application :
const foundUsers = users.find({ name: { equalWith: 'John Doe' } }); console.log(foundUsers);
Ce package est sous licence MIT.
Cette documentation doit fournir un aperçu concis de la façon d'utiliser efficacement le package React-Rock.
Les contributions sont les bienvenues ! Veuillez consulter les directives de contribution.
Ce projet est sous licence MIT.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!