From d6f20709ec61a91d8c97f17d472cdaedf362dfbd Mon Sep 17 00:00:00 2001 From: Tomas Mozeris Date: Wed, 1 Jun 2022 15:10:01 +0300 Subject: [PATCH 1/3] fix onItemLayout --- src/platform/reactnative/viewrenderer/ViewRenderer.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/platform/reactnative/viewrenderer/ViewRenderer.tsx b/src/platform/reactnative/viewrenderer/ViewRenderer.tsx index 323c40a6..7d9e0453 100644 --- a/src/platform/reactnative/viewrenderer/ViewRenderer.tsx +++ b/src/platform/reactnative/viewrenderer/ViewRenderer.tsx @@ -30,6 +30,7 @@ export default class ViewRenderer extends BaseViewRenderer { } : { ref: this._setRef, + onLayout: this._onLayout, style: { left: this.props.x, position: "absolute", From 3b0d1a87423eb2288a0b856fcd4479f89393f1d2 Mon Sep 17 00:00:00 2001 From: Tomas Mozeris <5544385+tomasmozeris@users.noreply.github.com> Date: Wed, 1 Jun 2022 15:20:57 +0300 Subject: [PATCH 2/3] fix onItemLayout --- src/platform/reactnative/viewrenderer/ViewRenderer.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/platform/reactnative/viewrenderer/ViewRenderer.tsx b/src/platform/reactnative/viewrenderer/ViewRenderer.tsx index 323c40a6..7d9e0453 100644 --- a/src/platform/reactnative/viewrenderer/ViewRenderer.tsx +++ b/src/platform/reactnative/viewrenderer/ViewRenderer.tsx @@ -30,6 +30,7 @@ export default class ViewRenderer extends BaseViewRenderer { } : { ref: this._setRef, + onLayout: this._onLayout, style: { left: this.props.x, position: "absolute", From b3d3dc3fa33e0e46afa47867df8f75ad27f58878 Mon Sep 17 00:00:00 2001 From: Tomas Mozeris Date: Fri, 3 Jun 2022 11:53:41 +0300 Subject: [PATCH 3/3] optimise onItemLayout --- .../reactnative/viewrenderer/ViewRenderer.tsx | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/platform/reactnative/viewrenderer/ViewRenderer.tsx b/src/platform/reactnative/viewrenderer/ViewRenderer.tsx index 7d9e0453..e31f7792 100644 --- a/src/platform/reactnative/viewrenderer/ViewRenderer.tsx +++ b/src/platform/reactnative/viewrenderer/ViewRenderer.tsx @@ -30,7 +30,7 @@ export default class ViewRenderer extends BaseViewRenderer { } : { ref: this._setRef, - onLayout: this._onLayout, + onLayout: this._onItemLayout, style: { left: this.props.x, position: "absolute", @@ -76,6 +76,12 @@ export default class ViewRenderer extends BaseViewRenderer { this._viewRef = view; } + private _onItemLayout = (): void => { + if (this.props.onItemLayout) { + this.props.onItemLayout(this.props.index); + } + } + private _onLayout = (event: LayoutChangeEvent): void => { //Preventing layout thrashing in super fast scrolls where RN messes up onLayout event const xDiff = Math.abs(this.props.x - event.nativeEvent.layout.x); @@ -90,9 +96,7 @@ export default class ViewRenderer extends BaseViewRenderer { } } - if (this.props.onItemLayout) { - this.props.onItemLayout(this.props.index); - } + this._onItemLayout(); } private _forceSizeUpdate = (dim: Dimension): void => { if (dim.width === this._dim.width && dim.height === this._dim.height) {