한 줄의 코드 + React 후크로 채팅 앱 자동 스크롤
5598 단어 webdevreactprogrammingjavascript
내가 실제로 말하는 내용을 이해하지 못한다면 내가 만든 이 작은 데모를 사용해 보십시오. 메시지를 입력하고 Enter 키를 누릅니다. 새 메시지를 보내면 메시지가 사라지고 스크롤해야 볼 수 있습니다.
If you want to try this interactive demo live head over to my original blog post.
사실 이 문제를 해결하는 것은 매우 간단합니다. 먼저 모든 채팅을 래핑하는 컨테이너 요소를 알아야 합니다. 그런 다음 요소를 선택하고
scrollHeight
을 사용하여 높이를 가져온 다음 scrollTop
을 사용하여 요소의 세로 스크롤 높이를 설정합니다.그게 다야.
const el = document.getElementById('chat-feed');
// id of the chat container ---------- ^^^
if (el) {
el.scrollTop = el.scrollHeight;
}
이것이 구현된 새로운 데모입니다. 이제 새 메시지가 들어올 때 맨 아래로 스크롤됩니다.
이제 반응 구현에 와서
useRef
& useEffect
를 사용하여 요소에 액세스하고 부작용을 처리합니다.이것은
dep
에 대한 종속성이 될 인수로 useEffect
를 취하고 채팅 컨테이너 요소에 전달할 ref
를 반환합니다.import React from 'react'
function useChatScroll<T>(dep: T): React.MutableRefObject<HTMLDivElement> {
const ref = React.useRef<HTMLDivElement>();
React.useEffect(() => {
if (ref.current) {
ref.current.scrollTop = ref.current.scrollHeight;
}
}, [dep]);
return ref;
}
위 후크의 사용법:
const Chat = () => {
const [messages , setMessages] = React.useState([])
const ref = useChatScroll(messages)
return(
<div ref={ref} >
{/* Chat feed here */}
</div>
)
}
Reference
이 문제에 관하여(한 줄의 코드 + React 후크로 채팅 앱 자동 스크롤), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/deepcodes/automatic-scrolling-for-chat-app-in-1-line-of-code-react-hook-3lm1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)