ReactNativeで永続化する手段としてAsyncStorageがある。
これは文字列のみの保存で毎回処理を書かないといけないのもあり、人気のあるラッパーの react-native-storage を使うことを考えた(expo managedで済ませたい&導入コストが高そうなのでrealmのことは考えない)。
するとバージョンがらみで多少混乱したので整理してみます。
Expo SDK 35( react native 0.59.8 )
Expo・ReactNativeのバージョンとAsyncStorage
Expoで現在最新のSDKバージョンはv35.0.0で対応するReactNativeバージョンは0.59です(リリースノート)。
ExpoのAsyncStorageドキュメントを見るとreact-nativeからインポートしてます。
1 |
import { AsyncStorage } from 'react-native'; |
ここでReact Native 0.59 のドキュメントを見るとこれはDeprecatedになっている。
Change Logを見ても0.59からDeprecatedとなったのがわかる。
使えはするけど使わない方がよい状態です。
代わりに使えと言われるasync-storageを見てみると導入はこうなる。
1 2 |
yarn add @react-native-community/async-storage react-native link @react-native-community/async-storage |
リンクが必要でExpo Managedでは使えないことがわかります。
つまり現状では非推奨のものを使うしかない。
react-native-storage on Expo
というわけで Expo で react-native-storage を使う時はこう設定する。
1 |
yarn add react-native-storage |
1 2 3 4 5 6 7 8 9 10 |
import Storage from 'react-native-storage'; import { AsyncStorage } from 'react-native'; const storage = new Storage({ size: 1000, storageBackend: AsyncStorage, // for web: window.localStorage defaultExpires: 1000 * 3600 * 24, enableCache: true, sync: {} }); |
これで使えますがアップグレード時には気を付けた方がよさそう。