useASyncStorageが酷すぎる
reactのhooksが出て着たことにより、様々なライブラリがreact hooksに対応し始めた。
AsyncStorageもver 1.1.0でhooksに対応したのだが、実装が酷かったので、ここにメモ。
以下のuseAsyncStorageが使用可能になった。
const { getItem, setItem, removeItem, mergeItem } = useAsyncStorage('@NameOfTheStore')
ソースコードを読んでみると8行で実装されていた。
...ドイヒー
何をしているかと言うと、何もしていない。
ただ、コードを複雑にしたラッパーを作成しているだけ。
export function useAsyncStorage(key: string): AsyncStorageHook {
return {
getItem: (...args) => AsyncStorage.getItem(key, ...args),
setItem: (...args) => AsyncStorage.setItem(key, ...args),
mergeItem: (...args) => AsyncStorage.mergeItem(key, ...args),
removeItem: (...args) => AsyncStorage.removeItem(key, ...args),
};
}
これは、オブジェクト指向におけるカプセル化が....
と言えなくもない。
だが、以下の二つのスニペットは、全く同じ動作をする。
// hooks
import { useAsyncStorage } from '@react-native-community/async-storage'
const { getItem, setItem, removeItem, mergeItem } = useAsyncStorage('@NameOfTheStore')
getItem()
// 通常
import { getItem, setItem, removeItem, mergeItem } from '@react-native-community/async-storage'
getItem('@NameOfTheStore')
useAsyncStorageを使う意味はあるのか?
まとめ
useAsyncStorageは、実務では役に立たないが、酒の席では役に立ちそうだ
完