Rev 16001 | Rev 16004 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useRef, useEffect, useState } from "react";
import Message from "./Messages";
import styles from "../chat.module.scss";
const MessagesList = ({ messages, onIntersection, isLastPage, scrollRef }) => {
const [loading, setLoading] = useState(false);
const loadMoreEl = useRef();
const handleIntersection = (target) => {
setLoading(true);
onIntersection(target);
};
useEffect(() => {
const observer = new IntersectionObserver(handleIntersection);
if (loadMoreEl.current) {
observer.observe(loadMoreEl.current);
}
return () => {
observer.disconnect();
};
}, []);
useEffect(() => {
setLoading(false);
}, [messages]);
return (
<div className={styles.messagesContainer} ref={scrollRef}>
<div className={styles.messageWrapper}>
{!isLastPage && !loading && <p ref={loadMoreEl}>Cargando...</p>}
{messages.map((message) => (
<Message message={message} key={message.id} />
))}
</div>
</div>
);
};
export default MessagesList;