npm instala reaccionar-nativo-mmkv-almacenamiento
preconstrucción de la expo
Esta biblioteca tiene como objetivo proporcionar una solución rápida y confiable para sus necesidades de almacenamiento de datos en aplicaciones nativas de reacción. Utiliza MMKV de Tencent bajo el capó en Android e iOS, ambos utilizados por su aplicación WeChat (más de mil millones de usuarios). A diferencia de otras soluciones de almacenamiento para React Native, esta biblioteca le permite almacenar cualquier tipo de datos, en cualquier cantidad de instancias de bases de datos, con o sin cifrado de una manera muy rápida y eficiente. Léelo en esta publicación de blog que escribí en dev.to
Aprenda a construir su propio módulo con JSI en mi blog
Funciona solo con reaccionar nativo 0.71.0 y superior. Si tiene una versión anterior de reaccionar nativa, siga usando 0.8.x.
A partir de v0.5.0
la biblioteca se reescribió en C++ tanto en Android como en iOS. Emplea React Native JSI, lo que la convierte en la opción de almacenamiento más rápida para React Native.
(~ 50K Android/30K iOS) e incluso más pequeño cuando está empaquetado.
MMKV usa mmap para mantener la memoria sincronizada con el archivo y protobuf para codificar/decodificar valores para lograr el mejor rendimiento. Puedes ver los puntos de referencia aquí: Android e iOS
useMMKVStorage
y useIndex
HooksHooks permite que el almacenamiento actualice su aplicación cuando se produce un cambio en el almacenamiento.
useMMKVStorage
de almacenamiento A partir de v0.5.5
, gracias al poder de JSI, ahora tenemos nuestro propio useMMKVStorage
Hook. Piense en ello como un estado persistente que siempre escribirá cada cambio en el almacenamiento y actualizará la interfaz de usuario de su aplicación al instante. No importa si recargas la aplicación o la reinicias.
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 >
) ;
} ;
Obtenga más información sobre useMMKVStorage
y conéctelo en los documentos.
useIndex
Un gancho que tomará una serie de claves y devolverá una serie de valores para esas claves. Se supone que esto funciona en combinación con Transacciones. Cuando haya creado su índice personalizado, necesitará una forma fácil y rápida de cargar valores para su índice. El gancho useIndex escucha activamente todos los cambios de lectura/escritura y actualiza los valores en consecuencia.
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 >
}
Obtenga más información sobre useIndex
engancharlo en los documentos.
Escuche el ciclo de vida de un valor y mutéelo sobre la marcha. Transactions le permite registrar funciones del ciclo de vida con su instancia de almacenamiento, como lectura, escritura y eliminación. Esto permite un control mejor y más administrado sobre el almacenamiento y también le permite crear índices personalizados con unas pocas líneas de código.
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 ) ) ;
}
} ) ;
Obtenga más información sobre cómo utilizar Transacciones en documentos
MMKV admite acceso simultáneo de lectura, lectura y escritura entre procesos. Esto significa que puedes usar MMKV para varias extensiones y widgets y tu aplicación.
Puede crear muchas instancias de bases de datos. Esto es de gran ayuda si tiene lógicas/módulos separados en la misma aplicación que usan datos de manera diferente. También ayuda a mejorar el rendimiento ya que cada instancia de base de datos es pequeña en lugar de una sola base de datos voluminosa, lo que hace que las cosas sean más lentas a medida que crece.
const userStorage = new MMKVLoader ( ) . withEncryption ( ) . withInstanceID ( 'userdata' ) . initialize ( ) ;
const settingsStorage = new MMKVLoader ( ) . withInstanceID ( 'settings' ) . initialize ( ) ;
La biblioteca admite cifrado completo (AES CFB-128) en Android e iOS. Puede optar por almacenar su clave de cifrado de forma segura para un uso continuo. La biblioteca utiliza Keychain en iOS y Android Keystore en Android (API 23 y superior). Cifrar una instancia es simple:
const storage = new MMKVLoader ( )
. withEncryption ( ) // Generates a random key and stores it securely in Keychain
. initialize ( ) ;
Y eso es todo.
Para cada instancia de base de datos, hay un índice de clave global y luego hay índices de cada tipo de datos. Así realizar consultas es fácil y rápido.
También se agrega soporte para redux persist a partir de v0.3.2.
Puede utilizar esta biblioteca con el flujo de trabajo básico de la exposición.
Gracias a pnthach95, el complemento Flipper finalmente está aquí. https://github.com/pnthach95/flipper-plugin-react-native-mmkv-storage. Admite el registro y la manipulación de valores de almacenamiento sobre la marcha.
Si está utilizando la biblioteca en uno de sus proyectos, considere apoyarla con una estrella. Se necesita mucho tiempo y esfuerzo para mantener esto mantenido y solucionar problemas y errores. Gracias.
¡Esa es una noticia increíble! Están sucediendo muchas cosas a un ritmo muy rápido en esta biblioteca en este momento. Cada pequeña ayuda es preciosa. Puedes contribuir de muchas maneras:
Esta biblioteca tiene la licencia MIT.
Copyright © Ammar Ahmed (@ammarahm-ed)