npm 설치 반응 네이티브-mmkv-스토리지
엑스포 사전 빌드
이 라이브러리는 반응 네이티브 앱의 데이터 저장 요구 사항에 맞는 빠르고 안정적인 솔루션을 제공하는 것을 목표로 합니다. WeChat 앱(10억 명 이상의 사용자)에서 사용되는 Android 및 iOS 모두에서 Tencent의 MMKV를 사용합니다. React Native의 다른 스토리지 솔루션과 달리 이 라이브러리를 사용하면 암호화 여부에 관계없이 매우 빠르고 효율적인 방식으로 모든 종류의 데이터 유형을 원하는 수의 데이터베이스 인스턴스에 저장할 수 있습니다. 내가 dev.to에 쓴 이 블로그 게시물에서 이에 대해 읽어보세요.
내 블로그에서 JSI를 사용하여 자신만의 모듈을 구축하는 방법을 알아보세요.
React Native 0.71.0 이상에서만 작동합니다. 이전 버전의 React Native를 사용하는 경우 0.8.x를 계속 사용하세요.
v0.5.0
부터 라이브러리는 Android와 iOS 모두에서 C++로 다시 작성되었습니다. React Native JSI를 사용하여 React Native의 가장 빠른 저장 옵션입니다.
(~ 50K Android/30K iOS) 패키지로 구성하면 더 작습니다.
MMKV는 mmap을 사용하여 메모리를 파일과 동기화하고 protobuf를 사용하여 값을 인코딩/디코딩하여 최상의 성능을 달성합니다. 여기에서 벤치마크를 볼 수 있습니다: Android 및 iOS
useMMKVStorage
및 useIndex
후크를 사용하여 반응후크를 사용하면 저장소에서 변경 사항이 발생할 때 저장소가 앱을 업데이트할 수 있습니다.
useMMKVStorage
후크 v0.5.5
부터 JSI의 기능 덕분에 이제 고유한 useMMKVStorage
Hook이 생겼습니다. 저장소의 모든 변경 사항을 항상 기록하고 앱 UI를 즉시 업데이트하는 지속 상태라고 생각하세요. 앱을 다시 로드하거나 다시 시작해도 상관없습니다.
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 >
) ;
} ;
문서에서 useMMKVStorage
후크에 대해 자세히 알아보세요.
useIndex
후크키 배열을 가져와 해당 키에 대한 값 배열을 반환하는 후크입니다. 이는 트랜잭션과 함께 작동한다고 가정됩니다. 사용자 정의 인덱스를 구축한 경우 인덱스 값을 로드하는 쉽고 빠른 방법이 필요합니다. useIndex 후크는 모든 읽기/쓰기 변경 사항을 적극적으로 수신하고 그에 따라 값을 업데이트합니다.
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 >
}
문서에서 useIndex
후크에 대해 자세히 알아보세요.
값의 수명주기를 듣고 이동 중에도 이를 변경하세요. 트랜잭션을 사용하면 읽기, 쓰기, 삭제 등 스토리지 인스턴스에 수명 주기 기능을 등록할 수 있습니다. 이를 통해 스토리지에 대한 더 나은 관리 제어가 가능하며 몇 줄의 코드로 사용자 정의 색인을 구축 할 수도 있습니다.
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 ) ) ;
}
} ) ;
문서에서 거래를 사용하는 방법에 대해 자세히 알아보세요.
MMKV는 프로세스 간 동시 읽기-읽기 및 읽기-쓰기 액세스를 지원합니다. 이는 다양한 확장 프로그램, 위젯 및 앱에 MMKV를 사용할 수 있음을 의미합니다.
많은 데이터베이스 인스턴스를 생성할 수 있습니다. 이는 동일한 앱에 데이터를 다르게 사용하는 별도의 로직/모듈이 있는 경우 큰 도움이 됩니다. 또한 각 데이터베이스 인스턴스가 크기가 커질수록 속도가 느려지는 단일 부피가 큰 데이터베이스 대신 작기 때문에 더 나은 성능에도 도움이 됩니다.
const userStorage = new MMKVLoader ( ) . withEncryption ( ) . withInstanceID ( 'userdata' ) . initialize ( ) ;
const settingsStorage = new MMKVLoader ( ) . withInstanceID ( 'settings' ) . initialize ( ) ;
라이브러리는 Android 및 iOS에서 전체 암호화(AES CFB-128)를 지원합니다. 지속적인 사용을 위해 암호화 키를 안전하게 저장하도록 선택할 수 있습니다. 라이브러리는 iOS의 키체인과 Android의 Android 키스토어(API 23 이상)를 사용합니다. 인스턴스 암호화는 간단합니다.
const storage = new MMKVLoader ( )
. withEncryption ( ) // Generates a random key and stores it securely in Keychain
. initialize ( ) ;
그리고 그게 다입니다.
각 데이터베이스 인스턴스에는 하나의 전역 키 인덱스가 있고 각 데이터 유형의 인덱스가 있습니다. 따라서 쿼리가 쉽고 빠릅니다.
Redux 지속에 대한 지원도 v0.3.2부터 추가되었습니다.
Expo Bare 워크플로와 함께 이 라이브러리를 사용할 수 있습니다.
pnthach95 덕분에 Flipper 플러그인이 마침내 출시되었습니다. https://github.com/pnthach95/flipper-plugin-react-native-mmkv-storage. 이는 즉시 저장 값 로깅 및 조작을 지원합니다.
프로젝트 중 하나에서 라이브러리를 사용하는 경우 스타 지원을 고려해보세요. 이를 유지 관리하고 문제와 버그를 해결하려면 많은 시간과 노력이 필요합니다. 감사합니다.
정말 멋진 소식이네요! 지금 이 도서관에서는 매우 빠른 속도로 많은 일이 일어나고 있습니다. 작은 도움 하나하나가 소중합니다. 다양한 방법으로 기여할 수 있습니다:
이 라이브러리는 MIT 라이선스에 따라 라이선스가 부여됩니다.
저작권 © Ammar Ahmed (@ammarahm-ed)