File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -14,6 +14,7 @@ import {
1414 GestureResponderEvent ,
1515 LayoutChangeEvent ,
1616} from 'react-native' ;
17+ import mergeExtraData from './merge-extradata' ;
1718
1819const isAndroidRTL = I18nManager . isRTL && Platform . OS === 'android' ;
1920
@@ -267,10 +268,14 @@ export default class AppIntroSlider<ItemT> extends React.Component<
267268 prevLabel,
268269 renderItem,
269270 data,
271+ extraData,
270272 ...otherProps
271273 } = this . props ;
272274 /* eslint-enable @typescript-eslint/no-unused-vars */
273275
276+ // Merge component width and user-defined extraData
277+ const extra = mergeExtraData ( extraData , this . state . width ) ;
278+
274279 return (
275280 < View style = { styles . flexOne } >
276281 < FlatList
@@ -283,7 +288,7 @@ export default class AppIntroSlider<ItemT> extends React.Component<
283288 style = { styles . flatList }
284289 renderItem = { this . _renderItem }
285290 onMomentumScrollEnd = { this . _onMomentumScrollEnd }
286- extraData = { this . state . width }
291+ extraData = { extra }
287292 onLayout = { this . _onLayout }
288293 // make sure all slides are rendered so we can use dots to navigate to them
289294 initialNumToRender = { data . length }
Original file line number Diff line number Diff line change 1+ function areInputsEqual (
2+ newInputs : readonly unknown [ ] ,
3+ lastInputs : readonly unknown [ ] ,
4+ ) : boolean {
5+ // Using for loop for speed. It generally performs better than array.every
6+ // https://github.com/alexreardon/memoize-one/pull/59
7+ for ( let i = 0 ; i < newInputs . length ; i ++ ) {
8+ // using shallow equality check
9+ if ( newInputs [ i ] !== lastInputs [ i ] ) {
10+ return false ;
11+ }
12+ }
13+ return true ;
14+ }
15+
16+ let lastArgs : unknown [ ] = [ ] ;
17+ let lastResult = 0 ;
18+
19+ export default function mergeExtraData ( ...newArgs : unknown [ ] ) : number {
20+ if ( areInputsEqual ( newArgs , lastArgs ) ) {
21+ return lastResult ;
22+ }
23+ // Something shallowly changed - return a new number from [0-10]
24+ lastResult = lastResult === 10 ? 0 : lastResult + 1 ;
25+ lastArgs = newArgs ;
26+ return lastResult ;
27+ }
You can’t perform that action at this time.
0 commit comments