File tree Expand file tree Collapse file tree 3 files changed +24
-14
lines changed
packages/rn-tester/js/examples/Dimensions Expand file tree Collapse file tree 3 files changed +24
-14
lines changed Original file line number Diff line number Diff line change 88 * @flow
99 */
1010
11- import EventEmitter from '../vendor/emitter/EventEmitter' ;
11+ import EventEmitter , {
12+ type EventSubscription ,
13+ } from '../vendor/emitter/EventEmitter' ;
1214import RCTDeviceEventEmitter from '../EventEmitter/RCTDeviceEventEmitter' ;
1315import NativeDeviceInfo , {
1416 type DisplayMetrics ,
@@ -100,24 +102,28 @@ class Dimensions {
100102 * are the same as the return values of `Dimensions.get('window')` and
101103 * `Dimensions.get('screen')`, respectively.
102104 */
103- static addEventListener ( type : 'change' , handler : Function ) {
105+ static addEventListener (
106+ type : 'change' ,
107+ handler : Function ,
108+ ) : EventSubscription {
104109 invariant (
105110 type === 'change' ,
106111 'Trying to subscribe to unknown event: "%s"' ,
107112 type ,
108113 ) ;
109- eventEmitter . addListener ( type , handler ) ;
114+ return eventEmitter . addListener ( type , handler ) ;
110115 }
111116
112117 /**
113- * Remove an event handler .
118+ * @deprecated Use `remove` on the EventSubscription from `addEventListener` .
114119 */
115120 static removeEventListener ( type : 'change' , handler : Function ) {
116121 invariant (
117122 type === 'change' ,
118123 'Trying to remove listener for unknown event: "%s"' ,
119124 type ,
120125 ) ;
126+ // NOTE: This will report a deprecation notice via `console.error`.
121127 eventEmitter . removeListener ( type , handler ) ;
122128 }
123129}
Original file line number Diff line number Diff line change @@ -25,13 +25,13 @@ export default function useWindowDimensions(): DisplayMetrics {
2525 setDimensions ( window ) ;
2626 }
2727 }
28- Dimensions . addEventListener ( 'change' , handleChange ) ;
28+ const subscription = Dimensions . addEventListener ( 'change' , handleChange ) ;
2929 // We might have missed an update between calling `get` in render and
3030 // `addEventListener` in this handler, so we set it here. If there was
3131 // no change, React will filter out this update as a no-op.
3232 handleChange ( { window : Dimensions . get ( 'window' ) } ) ;
3333 return ( ) => {
34- Dimensions . removeEventListener ( 'change' , handleChange ) ;
34+ subscription . remove ( ) ;
3535 } ;
3636 } , [ dimensions ] ) ;
3737 return dimensions ;
Original file line number Diff line number Diff line change 88 * @flow
99 */
1010
11+ import type { EventSubscription } from 'react-native/Libraries/vendor/emitter/EventEmitter' ;
1112import { Dimensions , Text , useWindowDimensions } from 'react-native' ;
1213import * as React from 'react' ;
1314
@@ -19,20 +20,23 @@ class DimensionsSubscription extends React.Component<
1920 dims : Dimensions . get ( this . props . dim ) ,
2021 } ;
2122
23+ _dimensionsSubscription : ?EventSubscription ;
24+
2225 componentDidMount ( ) {
23- Dimensions . addEventListener ( 'change' , this . _handleDimensionsChange ) ;
26+ this . _dimensionsSubscription = Dimensions . addEventListener (
27+ 'change' ,
28+ dimensions => {
29+ this . setState ( {
30+ dims : dimensions [ this . props . dim ] ,
31+ } ) ;
32+ } ,
33+ ) ;
2434 }
2535
2636 componentWillUnmount ( ) {
27- Dimensions . removeEventListener ( 'change' , this . _handleDimensionsChange ) ;
37+ this . _dimensionsSubscription ?. remove ( ) ;
2838 }
2939
30- _handleDimensionsChange = dimensions => {
31- this . setState ( {
32- dims : dimensions [ this . props . dim ] ,
33- } ) ;
34- } ;
35-
3640 render ( ) {
3741 return < Text > { JSON . stringify ( this . state . dims , null , 2 ) } </ Text > ;
3842 }
You can’t perform that action at this time.
0 commit comments