【发布时间】:2021-01-25 02:23:47
【问题描述】:
我有一个包含聊天消息的 div,我希望它在渲染后立即向下滚动到最新消息。 因此,当我在 useEffect 中对该 div 使用滚动功能时,它不起作用,但是当我在 setTimeout 中运行它时,它起作用了
useEffect(()=>{
getConversation()//fetch the conversation
setTimeout(() => {
holder.current.scroll(0, holder.current.scrollHeight)
console.log('=====================>',holder.current.scrollHeight)
}, 400);
},[getConversation])
如果我将时间设置为 200 毫秒而不是 400 毫秒,那真的很奇怪
【问题讨论】:
-
你为什么用
setTimeout -
我认为您的 getConverstion() 方法需要很长时间才能执行,因此当您添加 setTimeout() 时,您之前的函数会获得执行时间,因此会得到所需的结果。
-
- 我使用 settimeout 因为它不起作用
-
那么你觉得我应该怎么做,Rohit
-
setTimeout几乎总是一种代码味道。您需要将函数作为回调运行。尝试为您的连接上的负载计时不会转化为其他人较慢的连接。
标签: javascript reactjs