Я создаю собственное приложение для контактов, которое генерирует случайный цвет для каждого номера контакта. Я хочу запоминать возвращаемое значение функции генератора случайных цветов на каждой итерации, поэтому, когда я ищу контакты, цвет не будет меняться при каждом действии.
в настоящее время я использую useMemo реакции для запоминания результат функции, но я получаю недействительный хук, потому что я не могу использовать хуки внутри нормальной функции с al oop.
Поскольку мой код ниже, ловушка useMemo вызывается только при первом рендеринге или когда компонент перерисовывает. Я могу вернуть только одно значение, потому что я не могу использовать useMemo внутри карты.
вот мой код ⬇. Спасибо за помощь
const Contacts = () => {
const [contact, setContact] = useState({});
const randomColor = useMemo(() => randomColorGenerator(), []);
useEffect(() => {}, []);
const renderContacts = item => {
return item.phoneNumbers.map(element => (
<TouchableOpacity
activeOpacity={1}
key={element.digits.toString()}
}}
>
<View>
<View>
<Text>{item.firstName}</Text>
<Text>{element.digits}</Text>
</View>
</View>
</TouchableOpacity>
));
};
const renderList = () => {
return (
<FlatList
keyboardShouldPersistTaps="handled"
data={contact}
keyExtractor={(item, index) => index.toString()}
renderItem={({ item }) => {
return <View>{renderContacts(item)}</View>;
}}
/>
);
};
return (
<View>
<Text style={Styles.textStyle}>All Contacts</Text>
{renderList()}
</View>
);
};