LoginSignup
4
0

More than 3 years have passed since last update.

useAsyncStorageが酷すぎる(超個人的メモ)

Last updated at Posted at 2019-12-31

alt

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は、実務では役に立たないが、酒の席では役に立ちそうだ

4
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0