Files
react-native/packages/rn-tester/js/utils/useAsyncStorageReducer.js
T
Andres Suarez 8bd3edec88 Update copyright headers from Facebook to Meta
Reviewed By: aaronabramov

Differential Revision: D33367752

fbshipit-source-id: 4ce94d184485e5ee0a62cf67ad2d3ba16e285c8f
2021-12-30 15:11:21 -08:00

34 lines
802 B
JavaScript

/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
* @flow
*/
import * as React from 'react';
import {AsyncStorage} from 'react-native';
import type {RNTesterState} from '../types/RNTesterTypes';
export const useAsyncStorageReducer = (
reducer: Function,
initialState: RNTesterState,
storageKey: string,
): [RNTesterState, Function] => {
const [state, dispatch] = React.useReducer<Function, Object>(
reducer,
initialState,
);
React.useEffect(() => {
if (state !== initialState) {
AsyncStorage.setItem(storageKey, JSON.stringify(state));
}
}, [state, storageKey, initialState]);
return [state, dispatch];
};