/**
* @license
* Copyright Stbui All Rights Reserved.
* https://github.com/stbui/prophet
*/
import React, {
Children,
useCallback,
useState,
useMemo,
ReactElement,
FunctionComponent,
} from 'react';
import TranslationProviderContext from './TranslationProviderContext';
interface Props {
locale?: string;
i18nProvider: any;
}
/**
*
* @param props.locale 默认zh
* @param props.i18nProvider
*
* @example
*
* import { TranslationProvider } from '@stbui/prophet-core';
*
* const View = () =>
*
* const MyApp = () => /TranslationProvider>
*
*/
const TranslationProvider: FunctionComponent = props => {
const { i18nProvider, children } = props;
const [state, setState] = useState({
locale: i18nProvider ? i18nProvider.getLocale() : 'zh',
i18nProvider,
});
const setLocale = useCallback(
(newLocale: string) =>
setState(state => ({ ...state, locale: newLocale })),
[setState]
);
const value = useMemo(
() => ({
...state,
setLocale,
}),
[setLocale, state]
);
return (
{Children.only(children)}
);
};
export default TranslationProvider;