66 * https://github.com/joshswan/react-native-globalize/blob/master/LICENSE
77 */
88
9- import React , { useEffect , useState } from 'react' ;
10- import { createGlobalize } from '../globalize' ;
9+ import React , { useEffect , useImperativeHandle , useState } from 'react' ;
10+ import { createGlobalize , Globalize } from '../globalize' ;
1111import { GlobalizeContext } from '../context' ;
1212
1313export interface Props {
@@ -19,26 +19,19 @@ export interface Props {
1919 onError ?( message : string , exception ?: Error ) : void ;
2020}
2121
22- export const GlobalizeProvider : React . FC < Props > = ( {
23- children,
24- currency : currencyCode = 'USD' ,
25- defaultLocale,
26- locale = 'en' ,
27- localeFallback : fallback = false ,
28- ...options
29- } ) => {
30- const [ globalize , setGlobalize ] = useState ( ( ) =>
31- createGlobalize ( {
32- ...options ,
33- locale,
34- currencyCode,
22+ export const GlobalizeProvider = React . forwardRef < Globalize , Props > (
23+ (
24+ {
25+ children,
26+ currency : currencyCode = 'USD' ,
3527 defaultLocale,
36- fallback,
37- } ) ,
38- ) ;
39-
40- useEffect ( ( ) => {
41- setGlobalize (
28+ locale = 'en' ,
29+ localeFallback : fallback = false ,
30+ ...options
31+ } ,
32+ ref ,
33+ ) => {
34+ const [ globalize , setGlobalize ] = useState ( ( ) =>
4235 createGlobalize ( {
4336 ...options ,
4437 locale,
@@ -47,7 +40,21 @@ export const GlobalizeProvider: React.FC<Props> = ({
4740 fallback,
4841 } ) ,
4942 ) ;
50- } , [ currencyCode , defaultLocale , locale , fallback ] ) ; // eslint-disable-line react-hooks/exhaustive-deps
5143
52- return < GlobalizeContext . Provider value = { globalize } > { children } </ GlobalizeContext . Provider > ;
53- } ;
44+ useEffect ( ( ) => {
45+ setGlobalize (
46+ createGlobalize ( {
47+ ...options ,
48+ locale,
49+ currencyCode,
50+ defaultLocale,
51+ fallback,
52+ } ) ,
53+ ) ;
54+ } , [ currencyCode , defaultLocale , locale , fallback ] ) ; // eslint-disable-line react-hooks/exhaustive-deps
55+
56+ useImperativeHandle ( ref , ( ) => globalize ) ;
57+
58+ return < GlobalizeContext . Provider value = { globalize } > { children } </ GlobalizeContext . Provider > ;
59+ } ,
60+ ) ;
0 commit comments