npm ติดตั้ง react-native-mmkv-storage
งานแสดงสินค้าล่วงหน้า
ไลบรารีนี้มีจุดมุ่งหมายเพื่อมอบโซลูชันที่รวดเร็วและเชื่อถือได้สำหรับความต้องการพื้นที่จัดเก็บข้อมูลของคุณในแอปที่เน้นการตอบสนอง ใช้ MMKV โดย Tencent ภายใต้ประทุนบน Android และ iOS ทั้งที่แอพ WeChat ของพวกเขาใช้งาน (ผู้ใช้มากกว่า 1 พันล้านคน) แตกต่างจากโซลูชันการจัดเก็บข้อมูลอื่นๆ สำหรับ React Native ไลบรารีนี้ช่วยให้คุณจัดเก็บข้อมูลประเภทใดก็ได้ ในอินสแตนซ์ฐานข้อมูลจำนวนเท่าใดก็ได้ โดยมีหรือไม่มีการเข้ารหัสด้วยวิธีที่รวดเร็วและมีประสิทธิภาพ อ่านเกี่ยวกับเรื่องนี้ในโพสต์บล็อกนี้ที่ฉันเขียนเมื่อ dev.to
เรียนรู้วิธีสร้างโมดูลของคุณเองด้วย JSI บนบล็อกของฉัน
ใช้งานได้กับ React Native 0.71.0 ขึ้นไปเท่านั้น หากคุณใช้ React Native เวอร์ชันเก่า ให้ใช้ 0.8.x ต่อไป
เริ่มต้นจาก v0.5.0
ไลบรารีได้รับการเขียนใหม่ด้วย C ++ บน Android และ iOS ทั้งคู่ ใช้ React Native JSI ทำให้เป็นตัวเลือกการจัดเก็บข้อมูลที่เร็วที่สุดสำหรับ React Native
(~ 50K Android/30K iOS) และเล็กกว่าเมื่อบรรจุแพ็คเกจ
MMKV ใช้ mmap เพื่อให้หน่วยความจำซิงค์กับไฟล์ และใช้ protobuf เพื่อเข้ารหัส/ถอดรหัสค่าเพื่อให้ได้ประสิทธิภาพที่ดีที่สุด คุณสามารถดูเกณฑ์มาตรฐานได้ที่นี่: Android และ iOS
useMMKVStorage
& useIndex
HooksHooks ให้พื้นที่เก็บข้อมูลอัปเดตแอปของคุณเมื่อมีการเปลี่ยนแปลงในพื้นที่เก็บข้อมูล
useMMKVStorage
ตะขอ MMKVStorage เริ่มต้นจาก 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
ตะขอดัชนีhook ที่จะรับอาร์เรย์ของคีย์และส่งกลับอาร์เรย์ของค่าสำหรับคีย์เหล่านั้น สิ่งนี้ควรจะทำงานร่วมกับธุรกรรม เมื่อคุณสร้างดัชนีที่กำหนดเองแล้ว คุณจะต้องมีวิธีที่ง่ายและรวดเร็วในการโหลดค่าสำหรับดัชนีของคุณ useIndex hook จะรับฟังการเปลี่ยนแปลงการอ่าน/เขียนทั้งหมดและอัปเดตค่าตามนั้น
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 ( ) ;
ไลบรารีรองรับการเข้ารหัสแบบเต็ม (AES CFB-128) บน Android และ iOS คุณสามารถเลือกจัดเก็บคีย์เข้ารหัสของคุณอย่างปลอดภัยเพื่อการใช้งานต่อเนื่องได้ ไลบรารีใช้ Keychain บน iOS และ Android Keystore บน Android (API 23 ขึ้นไป) การเข้ารหัสอินสแตนซ์นั้นง่ายดาย:
const storage = new MMKVLoader ( )
. withEncryption ( ) // Generates a random key and stores it securely in Keychain
. initialize ( ) ;
และนั่นมัน
สำหรับแต่ละอินสแตนซ์ฐานข้อมูล จะมีดัชนีคีย์ส่วนกลางหนึ่งรายการ จากนั้นจะมีดัชนีของข้อมูลแต่ละประเภท ดังนั้นการสืบค้นจึงง่ายและรวดเร็ว
เพิ่มการรองรับ Reduxยังคงมีอยู่โดยเริ่มตั้งแต่ v0.3.2
คุณสามารถใช้ไลบรารีนี้กับเวิร์กโฟลว์งานแสดงสินค้าเปล่าได้
ขอบคุณปลั๊กอิน pthach95 Flipper ในที่สุดก็มาถึงแล้ว https://github.com/pthach95/flipper-plugin-react-native-mmkv-storage รองรับการบันทึกและจัดการค่าการจัดเก็บข้อมูลได้ทันที
หากคุณกำลังใช้ห้องสมุดในโครงการใดโครงการหนึ่งของคุณ ให้พิจารณาสนับสนุนด้วยการติดดาว ต้องใช้เวลาและความพยายามอย่างมากในการบำรุงรักษาและแก้ไขปัญหาและจุดบกพร่อง ขอบคุณ
นั่นเป็นข่าวที่ยอดเยี่ยม! มีหลายอย่างเกิดขึ้นอย่างรวดเร็วในห้องสมุดนี้ในขณะนี้ ทุกความช่วยเหลือเล็กๆ น้อยๆ นั้นมีค่า คุณสามารถมีส่วนร่วมได้หลายวิธี:
ห้องสมุดนี้ได้รับอนุญาตภายใต้ใบอนุญาต MIT
ลิขสิทธิ์© Ammar Ahmed (@ammarahm-ed)