From 6700c9b93bfabc995a6ec22487492d209517e41a Mon Sep 17 00:00:00 2001 From: Enrique Balleste Date: Thu, 9 Nov 2017 13:03:14 -0500 Subject: [PATCH 1/3] fix shallow compare bugs Summary: Fixes invariant errors triggered when using objects for certain FlatList props, leverages fbjs areEqual to test for equality. https://github.com/facebook/react-native/issues/16710 --- Libraries/Lists/FlatList.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Libraries/Lists/FlatList.js b/Libraries/Lists/FlatList.js index 9b145cdbd4b5bc..b1dcf18a96dd59 100644 --- a/Libraries/Lists/FlatList.js +++ b/Libraries/Lists/FlatList.js @@ -17,7 +17,7 @@ const React = require('React'); const View = require('View'); const VirtualizedList = require('VirtualizedList'); -const invariant = require('fbjs/lib/invariant'); +const invariant = require('fbjs/lib/invariant'), areEqual = require('fbjs/lib/areEqual'); import type {StyleObj} from 'StyleSheetTypes'; import type { @@ -419,16 +419,15 @@ class FlatList extends React.PureComponent, void> { 'changing the number of columns to force a fresh render of the component.', ); invariant( - nextProps.onViewableItemsChanged === this.props.onViewableItemsChanged, + areEqual(nextProps.onViewableItemsChanged, this.props.onViewableItemsChanged), 'Changing onViewableItemsChanged on the fly is not supported', ); invariant( - nextProps.viewabilityConfig === this.props.viewabilityConfig, + areEqual(nextProps.viewabilityConfig, this.props.viewabilityConfig), 'Changing viewabilityConfig on the fly is not supported', ); invariant( - nextProps.viewabilityConfigCallbackPairs === - this.props.viewabilityConfigCallbackPairs, + areEqual(nextProps.viewabilityConfigCallbackPairs, this.props.viewabilityConfigCallbackPairs), 'Changing viewabilityConfigCallbackPairs on the fly is not supported', ); From 9a2badaac275cd47d34afa35128aff3d65c50a45 Mon Sep 17 00:00:00 2001 From: Enrique Balleste Date: Thu, 23 Nov 2017 11:14:38 -0500 Subject: [PATCH 2/3] prettier styled by prettier --- Libraries/Lists/FlatList.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/Libraries/Lists/FlatList.js b/Libraries/Lists/FlatList.js index b1dcf18a96dd59..bcd3bb4f315558 100644 --- a/Libraries/Lists/FlatList.js +++ b/Libraries/Lists/FlatList.js @@ -17,7 +17,8 @@ const React = require('React'); const View = require('View'); const VirtualizedList = require('VirtualizedList'); -const invariant = require('fbjs/lib/invariant'), areEqual = require('fbjs/lib/areEqual'); +const invariant = require('fbjs/lib/invariant'); +const areEqual = require('fbjs/lib/areEqual'); import type {StyleObj} from 'StyleSheetTypes'; import type { @@ -419,7 +420,10 @@ class FlatList extends React.PureComponent, void> { 'changing the number of columns to force a fresh render of the component.', ); invariant( - areEqual(nextProps.onViewableItemsChanged, this.props.onViewableItemsChanged), + areEqual( + nextProps.onViewableItemsChanged, + this.props.onViewableItemsChanged + ), 'Changing onViewableItemsChanged on the fly is not supported', ); invariant( @@ -427,7 +431,10 @@ class FlatList extends React.PureComponent, void> { 'Changing viewabilityConfig on the fly is not supported', ); invariant( - areEqual(nextProps.viewabilityConfigCallbackPairs, this.props.viewabilityConfigCallbackPairs), + areEqual( + nextProps.viewabilityConfigCallbackPairs, + this.props.viewabilityConfigCallbackPairs + ), 'Changing viewabilityConfigCallbackPairs on the fly is not supported', ); From db06d53cc430b954999b4b65343341afb761a8ea Mon Sep 17 00:00:00 2001 From: Enrique Balleste Date: Thu, 23 Nov 2017 11:22:53 -0500 Subject: [PATCH 3/3] prettier updates removed trailing spaces --- Libraries/Lists/FlatList.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Libraries/Lists/FlatList.js b/Libraries/Lists/FlatList.js index bcd3bb4f315558..efa374e32cf491 100644 --- a/Libraries/Lists/FlatList.js +++ b/Libraries/Lists/FlatList.js @@ -421,7 +421,7 @@ class FlatList extends React.PureComponent, void> { ); invariant( areEqual( - nextProps.onViewableItemsChanged, + nextProps.onViewableItemsChanged, this.props.onViewableItemsChanged ), 'Changing onViewableItemsChanged on the fly is not supported', @@ -432,7 +432,7 @@ class FlatList extends React.PureComponent, void> { ); invariant( areEqual( - nextProps.viewabilityConfigCallbackPairs, + nextProps.viewabilityConfigCallbackPairs, this.props.viewabilityConfigCallbackPairs ), 'Changing viewabilityConfigCallbackPairs on the fly is not supported',