From 90bd23f783eea432c6365ee65056ae7195559d35 Mon Sep 17 00:00:00 2001 From: Nicolas Gallagher Date: Thu, 14 Jun 2018 13:21:25 -0700 Subject: [PATCH] [fix] onLayout event object Make sure that `this` within the `target` getter references the React component rather than the layout event object. Fix #996 --- packages/react-native-web/src/exports/TextInput/index.js | 1 + .../react-native-web/src/modules/applyLayout/index.js | 9 +++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/react-native-web/src/exports/TextInput/index.js b/packages/react-native-web/src/exports/TextInput/index.js index 4b5bbd65..ab72cf71 100644 --- a/packages/react-native-web/src/exports/TextInput/index.js +++ b/packages/react-native-web/src/exports/TextInput/index.js @@ -183,6 +183,7 @@ class TextInput extends Component<*> { blurOnSubmit, clearTextOnFocus, onChangeText, + onLayout, onSelectionChange, onSubmitEditing, selection, diff --git a/packages/react-native-web/src/modules/applyLayout/index.js b/packages/react-native-web/src/modules/applyLayout/index.js index 869f6011..cae2ad1c 100644 --- a/packages/react-native-web/src/modules/applyLayout/index.js +++ b/packages/react-native-web/src/modules/applyLayout/index.js @@ -131,11 +131,12 @@ const applyLayout = Component => { ) { this._layoutState = { x, y, width, height }; const nativeEvent = { - layout: this._layoutState, - get target() { - return findNodeHandle(this); - } + layout: this._layoutState }; + Object.defineProperty(nativeEvent, 'target', { + enumerable: true, + get: () => findNodeHandle(this) + }); onLayout({ nativeEvent, timeStamp: Date.now() }); } }