npm instal reaksi-asli-penyimpanan mmkv
pameran pra-pembuatan
Pustaka ini bertujuan untuk memberikan solusi cepat & andal untuk kebutuhan penyimpanan data Anda di aplikasi asli reaksi. Ia menggunakan MMKV oleh Tencent di Android dan iOS, keduanya digunakan oleh aplikasi WeChat mereka (lebih dari 1 Miliar pengguna). Tidak seperti solusi penyimpanan lainnya untuk React Native, perpustakaan ini memungkinkan Anda menyimpan segala jenis tipe data, dalam sejumlah instance database, dengan atau tanpa enkripsi dengan cara yang sangat cepat dan efisien. Baca tentangnya di postingan blog yang saya tulis di dev.to
Pelajari cara membuat modul Anda sendiri dengan JSI di blog saya
Hanya berfungsi dengan reaksi asli 0.71.0 ke atas. Jika Anda menggunakan reaksi asli versi lama, tetap gunakan 0.8.x.
Mulai dari v0.5.0
perpustakaan telah ditulis ulang dalam C++ di Android dan iOS keduanya. Ini menggunakan React Native JSI menjadikannya opsi penyimpanan tercepat untuk React Native.
(~ 50K Android/30K iOS) dan bahkan lebih kecil lagi jika dikemas.
MMKV menggunakan mmap untuk menjaga memori tetap tersinkronisasi dengan file, dan protobuf untuk menyandikan/mendekode nilai untuk mencapai kinerja terbaik. Anda dapat melihat tolok ukurnya di sini: Android & iOS
useMMKVStorage
& useIndex
HooksHooks memungkinkan penyimpanan memperbarui aplikasi Anda ketika terjadi perubahan pada penyimpanan.
useMMKVStorage
kait Penyimpanan MMKV Mulai dari v0.5.5
, berkat kekuatan JSI, kami sekarang memiliki useMMKVStorage
Hook kami sendiri. Anggap saja seperti keadaan bertahan yang akan selalu menulis setiap perubahan dalam penyimpanan dan memperbarui UI aplikasi Anda secara instan. Tidak masalah jika Anda memuat ulang aplikasi atau memulai ulang.
import { MMKVLoader , useMMKVStorage } from 'react-native-mmkv-storage' ;
const storage = new MMKVLoader ( ) . initialize ( ) ;
const App = ( ) => {
const [ user , setUser ] = useMMKVStorage ( 'user' , storage , 'robert' ) ;
const [ age , setAge ] = useMMKVStorage ( 'age' , storage , 24 ) ;
return (
< View style = { styles . header } >
< Text style = { styles . headerText } >
I am { user } and I am { age } years old.
</ Text >
</ View >
) ;
} ;
Pelajari lebih lanjut tentang useMMKVStorage
kaitkan di dokumen.
useIndex
kait IndeksSebuah hook yang akan mengambil array kunci dan mengembalikan array nilai untuk kunci tersebut. Ini seharusnya bekerja dalam kombinasi dengan Transaksi. Saat Anda telah membuat indeks khusus, Anda memerlukan cara yang mudah dan cepat untuk memuat nilai indeks Anda. useIndex hook secara aktif mendengarkan semua perubahan baca/tulis dan memperbarui nilai yang sesuai.
const App = ( ) => {
// Get list of all post ids
const postsIndex = useMMKVStorage ( "postsIndex" , storage , [ ] ) ; // ['post123','post234'];
// Get the posts based on those ids.
const [ posts , update , remove ] = useIndex ( postsIndex , "object" storage ) ;
return < View >
< FlatList
data = { posts }
renderItem = { ... }
>
</ View >
}
Pelajari lebih lanjut tentang useIndex
kaitkan di dokumen.
Dengarkan siklus hidup suatu nilai dan mutasikan nilai tersebut saat bepergian. Transaksi memungkinkan Anda mendaftarkan fungsi siklus hidup dengan instans penyimpanan Anda seperti Baca, Tulis, dan Hapus. Hal ini memungkinkan kontrol yang lebih baik dan lebih terkelola atas penyimpanan dan juga memungkinkan Anda membuat indeks khusus dengan beberapa baris kode.
MMKV . transactions . register ( 'object' , 'beforewrite' , ( { key , value } ) => {
if ( key . startsWith ( 'post.' ) ) {
// Call this only when the key has the post prefix.
let indexForTag = MMKV . getArray ( ` ${ value . tag } -index` ) || [ ] ;
MMKV . setArray ( indexForTag . push ( key ) ) ;
}
} ) ;
Pelajari lebih lanjut tentang cara menggunakan Transaksi di dokumen
MMKV mendukung akses baca-baca dan baca-tulis secara bersamaan antar proses. Ini berarti Anda dapat menggunakan MMKV untuk berbagai ekstensi dan widget serta aplikasi Anda.
Anda dapat membuat banyak instance database. Hal ini sangat membantu jika Anda memiliki logika/modul terpisah dalam aplikasi yang sama yang menggunakan data secara berbeda. Hal ini juga membantu dalam performa yang lebih baik karena setiap instance database berukuran kecil, bukan satu database besar yang membuat segalanya menjadi lebih lambat seiring pertumbuhannya.
const userStorage = new MMKVLoader ( ) . withEncryption ( ) . withInstanceID ( 'userdata' ) . initialize ( ) ;
const settingsStorage = new MMKVLoader ( ) . withInstanceID ( 'settings' ) . initialize ( ) ;
Perpustakaan mendukung enkripsi penuh (AES CFB-128) di Android dan iOS. Anda dapat memilih untuk menyimpan kunci enkripsi Anda dengan aman untuk penggunaan berkelanjutan. Pustaka menggunakan Rantai Kunci di iOS dan Android Keystore di Android (API 23 ke atas). Mengenkripsi sebuah instance itu sederhana:
const storage = new MMKVLoader ( )
. withEncryption ( ) // Generates a random key and stores it securely in Keychain
. initialize ( ) ;
Dan itu saja.
Untuk setiap instance database, terdapat satu indeks kunci global dan kemudian terdapat indeks untuk setiap jenis data. Jadi menanyakannya mudah dan cepat.
Dukungan untuk redux persist juga ditambahkan mulai dari v0.3.2.
Anda dapat menggunakan perpustakaan ini dengan alur kerja expo bare.
Berkat plugin pnthach95 Flipper akhirnya hadir. https://github.com/pnthach95/flipper-plugin-react-native-mmkv-storage. Ini mendukung pencatatan dan manipulasi nilai penyimpanan dengan cepat.
Jika Anda menggunakan perpustakaan di salah satu proyek Anda, pertimbangkan untuk mendukung dengan bintang. Dibutuhkan banyak waktu dan upaya untuk menjaganya tetap terpelihara dan mengatasi masalah dan bug. Terima kasih.
Itu adalah berita yang luar biasa! Ada banyak hal yang terjadi dengan sangat cepat di perpustakaan ini saat ini. Setiap bantuan kecil sangat berharga. Anda dapat berkontribusi dalam banyak cara:
Perpustakaan ini dilisensikan di bawah lisensi MIT.
Hak Cipta © Ammar Ahmed (@ammarahm-ed)