File tree Expand file tree Collapse file tree 4 files changed +15
-5
lines changed
examples/pages/dimensions
react-native-web/src/exports/Dimensions Expand file tree Collapse file tree 4 files changed +15
-5
lines changed Original file line number Diff line number Diff line change @@ -33,7 +33,7 @@ Get a dimension (e.g., window or screen).
33
33
This should only be called server-side with an estimate for initial dimensions to be used when pre-rendering pages on the server.
34
34
{% endcall %}
35
35
36
- {% call macro.prop('addEventListener', '(type: ?string, listener: (dimensions) => void) => void ') %}
36
+ {% call macro.prop('addEventListener', '(type: ?string, listener: (dimensions) => void) => ?EmitterSubscription ') %}
37
37
Add a listener to ` Dimensions ` changes. Listen to the ` "change" ` event type. The handler is called with the dimensions state.
38
38
{% endcall %}
39
39
Original file line number Diff line number Diff line change @@ -12,9 +12,9 @@ export default function DimensionsPage() {
12
12
setWindow ( win ) ;
13
13
} ;
14
14
15
- Dimensions . addEventListener ( 'change' , handleChange ) ;
15
+ const subscription = Dimensions . addEventListener ( 'change' , handleChange ) ;
16
16
return ( ) => {
17
- Dimensions . removeEventListener ( 'change' , handleChange ) ;
17
+ subscription . remove ( ) ;
18
18
} ;
19
19
} , [ setScreen , setWindow ] ) ;
20
20
Original file line number Diff line number Diff line change @@ -14,13 +14,16 @@ describe('apis/Dimensions', () => {
14
14
15
15
test ( 'addEventListener' , ( ) => {
16
16
const handler = jest . fn ( ) ;
17
- Dimensions . addEventListener ( 'change' , handler ) ;
17
+ const subscription = Dimensions . addEventListener ( 'change' , handler ) ;
18
18
Dimensions . _update ( ) ;
19
19
expect ( handler ) . toHaveBeenCalledTimes ( 1 ) ;
20
20
expect ( handler ) . toHaveBeenLastCalledWith ( {
21
21
window : Dimensions . get ( 'window' ) ,
22
22
screen : Dimensions . get ( 'screen' )
23
23
} ) ;
24
+ subscription . remove ( ) ;
25
+ Dimensions . _update ( ) ;
26
+ expect ( handler ) . toHaveBeenCalledTimes ( 1 ) ;
24
27
} ) ;
25
28
26
29
test ( 'removeEventListener' , ( ) => {
Original file line number Diff line number Diff line change 8
8
* @flow
9
9
*/
10
10
11
+ import type { EventSubscription } from '../../vendor/react-native/emitter/EventEmitter' ;
11
12
import { canUseDOM } from 'fbjs/lib/ExecutionEnvironment' ;
12
13
import invariant from 'fbjs/lib/invariant' ;
13
14
@@ -94,9 +95,15 @@ export default class Dimensions {
94
95
static addEventListener (
95
96
type : DimensionEventListenerType ,
96
97
handler : ( DimensionsValue ) = > void
97
- ) : void {
98
+ ) : EventSubscription {
98
99
listeners [ type ] = listeners [ type ] || [ ] ;
99
100
listeners [ type ] . push ( handler ) ;
101
+
102
+ return {
103
+ remove : ( ) = > {
104
+ this . removeEventListener ( type , handler ) ;
105
+ }
106
+ } ;
100
107
}
101
108
102
109
static removeEventListener (
You can’t perform that action at this time.
0 commit comments