@@ -16,7 +16,6 @@ import {
16
16
NavigationEventPayload ,
17
17
EventType ,
18
18
} from 'react-navigation' ;
19
- import { BackHandler } from 'react-native' ;
20
19
21
20
export function useNavigation < S > ( ) : NavigationScreenProp < S & NavigationRoute > {
22
21
const navigation = useContext ( NavigationContext ) as any ; // TODO typing?
@@ -152,14 +151,13 @@ type EffectCallback = (() => void) | (() => () => void);
152
151
// See https://github.com/react-navigation/hooks/issues/39#issuecomment-534694135
153
152
export const useFocusEffect = ( callback : EffectCallback ) => {
154
153
const navigation = useNavigation ( ) ;
155
- const getCallback = useGetter ( callback ) ;
156
154
157
155
useEffect ( ( ) => {
158
156
let isFocused = false ;
159
157
let cleanup : ( ( ) => void ) | void ;
160
158
161
159
if ( navigation . isFocused ( ) ) {
162
- cleanup = getCallback ( ) ( ) ;
160
+ cleanup = callback ( ) ;
163
161
isFocused = true ;
164
162
}
165
163
@@ -171,7 +169,7 @@ export const useFocusEffect = (callback: EffectCallback) => {
171
169
}
172
170
173
171
cleanup && cleanup ( ) ;
174
- cleanup = getCallback ( ) ( ) ;
172
+ cleanup = callback ( ) ;
175
173
isFocused = true ;
176
174
} ) ;
177
175
@@ -186,34 +184,27 @@ export const useFocusEffect = (callback: EffectCallback) => {
186
184
focusSubscription . remove ( ) ;
187
185
blurSubscription . remove ( ) ;
188
186
} ;
189
- } , [ getCallback , navigation ] ) ;
187
+ } , [ callback , navigation ] ) ;
190
188
} ;
191
189
192
190
export const useIsFocused = ( ) => {
193
191
const navigation = useNavigation ( ) ;
192
+ const getNavigation = useGetter ( useNavigation ( ) ) ;
194
193
const [ focused , setFocused ] = useState ( navigation . isFocused ( ) ) ;
195
194
196
195
useEffect ( ( ) => {
197
- const focusSubscription = navigation . addListener ( 'willFocus' , ( ) =>
198
- setFocused ( true ) ,
196
+ const nav = getNavigation ( ) ;
197
+ const focusSubscription = nav . addListener ( 'willFocus' , ( ) =>
198
+ setFocused ( true )
199
199
) ;
200
- const blurSubscription = navigation . addListener ( 'willBlur' , ( ) =>
201
- setFocused ( false ) ,
200
+ const blurSubscription = nav . addListener ( 'willBlur' , ( ) =>
201
+ setFocused ( false )
202
202
) ;
203
203
return ( ) => {
204
204
focusSubscription . remove ( ) ;
205
205
blurSubscription . remove ( ) ;
206
206
} ;
207
- } , [ setFocused ] ) ;
207
+ } , [ getNavigation ] ) ;
208
208
209
209
return focused ;
210
210
} ;
211
-
212
- export const useBackHandler = ( backHandler : ( ) => boolean ) => {
213
- useFocusEffect ( ( ) => {
214
- BackHandler . addEventListener ( 'hardwareBackPress' , backHandler ) ;
215
- return ( ) => {
216
- BackHandler . removeEventListener ( 'hardwareBackPress' , backHandler ) ;
217
- } ;
218
- } ) ;
219
- } ;
0 commit comments