mirror of
https://github.com/zhigang1992/react-native-web.git
synced 2026-04-24 04:25:27 +08:00
@@ -6,7 +6,7 @@ describe('apis/Dimensions', () => {
|
||||
test('addEventListener', () => {
|
||||
const handler = jest.fn();
|
||||
Dimensions.addEventListener('change', handler);
|
||||
Dimensions.set();
|
||||
Dimensions._update();
|
||||
expect(handler).toHaveBeenCalledTimes(1);
|
||||
expect(handler).toHaveBeenLastCalledWith({
|
||||
window: Dimensions.get('window'),
|
||||
@@ -17,7 +17,7 @@ describe('apis/Dimensions', () => {
|
||||
test('removeEventListener', () => {
|
||||
const handler = jest.fn();
|
||||
Dimensions.removeEventListener('change', handler);
|
||||
Dimensions.set();
|
||||
Dimensions._update();
|
||||
expect(handler).toHaveBeenCalledTimes(0);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -35,7 +35,18 @@ export default class Dimensions {
|
||||
return dimensions[dimension];
|
||||
}
|
||||
|
||||
static set(): void {
|
||||
static set(initialDimensions: ?{ [key: string]: any }): void {
|
||||
if (initialDimensions) {
|
||||
if (canUseDOM) {
|
||||
invariant(false, 'Dimensions cannot be set in the browser');
|
||||
} else {
|
||||
dimensions.screen = initialDimensions.screen;
|
||||
dimensions.window = initialDimensions.window;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static _update() {
|
||||
dimensions.window = {
|
||||
fontScale: 1,
|
||||
height: win.innerHeight,
|
||||
@@ -67,8 +78,7 @@ export default class Dimensions {
|
||||
}
|
||||
}
|
||||
|
||||
Dimensions.set();
|
||||
|
||||
if (canUseDOM) {
|
||||
window.addEventListener('resize', debounce(Dimensions.set, 16), false);
|
||||
Dimensions._update();
|
||||
window.addEventListener('resize', debounce(Dimensions._update, 16), false);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user