diff --git a/docs/storybook/2-apis/Dimensions/DimensionsScreen.js b/docs/storybook/2-apis/Dimensions/DimensionsScreen.js
index 7faedf65..b1b92fed 100644
--- a/docs/storybook/2-apis/Dimensions/DimensionsScreen.js
+++ b/docs/storybook/2-apis/Dimensions/DimensionsScreen.js
@@ -34,6 +34,14 @@ const DimensionsScreen = () =>
}}
/>
+
+
{
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);
});
});
diff --git a/src/apis/Dimensions/index.js b/src/apis/Dimensions/index.js
index 07264e2d..5b7489ce 100644
--- a/src/apis/Dimensions/index.js
+++ b/src/apis/Dimensions/index.js
@@ -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);
}