Если «последнее сообщение» относится только к компоненту ListItem
, а не к тому, что у вас уже есть, вы можете разрешить элементу списка выполнять сетевой запрос самостоятельно. Я бы переместил функцию внутрь ListItem
. Вам нужно установить какое-то состояние для хранения этого значения и, возможно, выполнить условный рендеринг. Затем вам нужно будет вызвать эту функцию, когда компонент смонтирован. Я предполагаю, что вы используете функциональные компоненты, поэтому useEffect()
должен помочь вам здесь:
//put this is a library of custom hooks you may want to use
// this in other places
const useIsMounted = () => {
const isMounted = useRef(false);
useEffect(() => {
isMounted.current = true;
return () => (isMounted.current = false);
}, []);
return isMounted;
};
const ListItem = ({
title,
bottomDivider,
chevron,
onPress,
id, //hae to pass id to ListItem
}) => {
const [lastMessage, setLastMessage] = useState(null);
const isMounted = useIsMounted();
React.useEffect(() => {
async function get() {
const m = await fireStoreDB.getUserLastMessage(
fireStoreDB.getUID,
id
);
//before setting state check if component is still mounted
if (isMounted.current) {
setLastMessage(m);
}
}
get();
}, [id, isMounted]);
return lastMessage ? <Text>DO SOMETHING</Text> : null;
};