From f5249b611dc6b14f2f1392858a3a8dac814027bf Mon Sep 17 00:00:00 2001 From: yurisanp <62726473+yurisanp@users.noreply.github.com> Date: Thu, 19 Dec 2024 15:12:51 +0000 Subject: [PATCH] Better render performance --- src/SelectDropdown.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/SelectDropdown.js b/src/SelectDropdown.js index d114c06..8fe3526 100644 --- a/src/SelectDropdown.js +++ b/src/SelectDropdown.js @@ -1,4 +1,4 @@ -import React, {forwardRef, useImperativeHandle, useCallback} from 'react'; +import React, {forwardRef, useImperativeHandle, useCallback, useMemo} from 'react'; import {View, TouchableOpacity, FlatList} from 'react-native'; import {isExist} from './helpers/isExist'; import Input from './components/Input'; @@ -76,6 +76,9 @@ const SelectDropdown = ( selectItem(index); }, })); + + const selectedIndex = useMemo(() => findIndexInArr(selectedItem, dataArr), [selectedItem, dataArr]); + /* ******************* Methods ******************* */ const openDropdown = () => { dropdownButtonRef.current.measure((fx, fy, w, h, px, py) => { @@ -91,7 +94,7 @@ const SelectDropdown = ( onBlur && onBlur(); }; const scrollToSelectedItem = () => { - const indexInCurrArr = findIndexInArr(selectedItem, dataArr); + const indexInCurrArr = selectedIndex; setTimeout(() => { if (disableAutoScroll) { return; @@ -144,8 +147,7 @@ const SelectDropdown = ( ); }; const renderFlatlistItem = ({item, index}) => { - const indexInCurrArr = findIndexInArr(selectedItem, dataArr); - const isSelected = index == indexInCurrArr; + const isSelected = index == selectedIndex; let clonedElement = renderItem ? renderItem(item, index, isSelected) : ; let props = {...clonedElement.props};