React-Rock ialah pakej ringan untuk mengurus keadaan global dalam aplikasi React. Ia memudahkan pengendalian data dengan menyediakan kedai dengan baris dan metadata, sambil menawarkan kaedah untuk melaksanakan operasi CRUD dan banyak lagi. Ia membolehkan penyepaduan mudah dengan komponen React, menjadikannya penyelesaian ideal untuk mengurus keadaan kompleks dalam aplikasi besar.
Untuk memasang pakej React-Rock, jalankan arahan berikut dalam projek anda:
npm install react-rock
Untuk mencipta kedai baharu dan menambah rekod, gunakan fungsi createStore. Berikut ialah contoh:
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 });
Apabila baris dibuat, ia akan mempunyai sifat berikut:
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 }
Setiap baris akan menyertakan data asal (Baris) dan beberapa sifat tambahan seperti _id, _index dan _observe.
Berikut ialah jadual dengan semua kaedah yang tersedia dan penerangannya:
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. |
Kaedah cari membolehkan anda mencari baris dalam kedai berdasarkan syarat tertentu:
npm install react-rock
React-Rock mengoptimumkan pemaparan semula dengan menawarkan mekanisme pembekuan. Apabila kemas kini kedai berlaku dan pilihan pegun didayakan, komponen React yang mengakses kedai menggunakan kaedah seperti find atau findFirst tidak akan dipaparkan semula secara automatik. Ini memberi anda kawalan ke atas masa komponen anda perlu dipaparkan semula, meningkatkan prestasi dalam aplikasi besar.
The WhereType digunakan untuk menentukan keadaan semasa menanyakan baris. Ia mentakrifkan struktur pertanyaan untuk menapis baris.
QueryValueType digunakan dalam WhereType untuk mentakrifkan keadaan yang mungkin untuk membuat pertanyaan:
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 mentakrifkan pilihan untuk menyesuaikan tingkah laku pertanyaan, seperti memilih baris tertentu atau melangkau baris.
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. |
Untuk menggunakan stor dalam komponen kelas, lanjutkan kelas 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 membolehkan anda berkongsi kedai yang sama merentas berbilang komponen, memastikan keadaan yang konsisten di seluruh apl:
const foundUsers = users.find({ name: { equalWith: 'John Doe' } }); console.log(foundUsers);
Pakej ini dilesenkan di bawah Lesen MIT.
Dokumentasi ini harus memberikan gambaran keseluruhan ringkas tentang cara menggunakan pakej react-rock dengan berkesan.
Sumbangan dialu-alukan! Sila lihat garis panduan sumbangan.
Projek ini dilesenkan di bawah Lesen MIT.
Atas ialah kandungan terperinci React Rock. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!