ساخت المان لیست پیامها با اسکرول خودکار در react js
اگر در حال توسعهی پروژهای هستید که در آن یک بخش گفتگو یا chat box دارید و میخواهید یک باکسی را ایجاد کنید که در صورت آپدیت به صورت خودکار اسکرول کند در این نوشته یک کد برای react js برای شما آماده کردهایم تا به سادگی بتوانید از آن استفاده کنید.
ساخت المان لیست پیامها با اسکرول خودکار در react js
از کد زیر برای ساخت یک بخش گفتگو یا چت به همراه اسکرول خودکار استفاده کنید:
import React, { useEffect, useState, useRef } from "react";
function Chat() {
const [messageItem, setMessageItem] = useState([]);
const container = useRef<HTMLDivElement>(null)
const autoScroll = () => {
try {
const { offsetHeight, scrollHeight, scrollTop } = container.current;
container.current?.scrollTo(0, scrollHeight);
} catch (err) {}
};
useEffect(() => {
autoScroll();
}, [messageItem]);
return (
<div ref={container}>
// messages
</div>
)
}
اگر سوالی در ارتباط با کد بالا دارید در بخش نظرات همین نوشته برای ما بنویسید.
برای امتیاز به این نوشته کلیک کنید!
[کل: 2 میانگین: 5]



















این روش روی SSR با Next.js هم جواب میده؟
بله، این روش با استفاده از useRef و useEffect در SSR با Next.js نیز به خوبی کار میکند.
میشه این کد رو با socket هم ترکیب کرد؟
بله، حتماً. این کد به راحتی قابل ترکیب با Socket.IO برای دریافت پیامها به صورت زنده و اعمال اسکرول خودکار است.
بهتر نیست از scrollIntoView برای آخرین پیام استفاده کنیم؟
سلام، ممنون از پیشنهاد شما. استفاده از scrollIntoView هم روش خوبی است، اما در این مثال برای سادگی و کنترل بیشتر، از روش دستی اسکرول استفاده شده است.
وقتی پیام اضافه میکنیم، این روش روی همه مرورگرها درست کار میکنه؟
سلام، بله این روش به طور کلی روی اکثر مرورگرهای مدرن به درستی کار میکند. اگر با مشکلی مواجه شدید، لطفاً جزئیات بیشتری ارائه دهید تا بتوانیم راهنمایی کنیم.
میشه autoScroll رو با animation هم ترکیب کرد؟
بله، امکان ترکیب autoScroll با انیمیشن وجود دارد. میتوانید از کتابخانههای انیمیشن CSS یا JavaScript برای ایجاد جلوههای بصری هنگام اسکرول استفاده کنید.