Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 页面加载时自动滚动到div的底部_Javascript_Reactjs_Scroll - Fatal编程技术网

Javascript 页面加载时自动滚动到div的底部

Javascript 页面加载时自动滚动到div的底部,javascript,reactjs,scroll,Javascript,Reactjs,Scroll,我在react中有一个聊天应用程序,并且一直使用npm包react滚动到底部。但它没有维护和抛出警告,所以我认为自己写这篇文章应该不会太难。 我正在跟踪stackoverflow的各种答案,但似乎无法正确回答 当页面加载时,它应该只滚动到容器的底部 知道我做错了什么吗?提前谢谢! 编辑:现在我在树的末尾有一个div,它有ref,因为我认为滚动到它会更容易,而不是试图告诉一个div在里面滚动 const chatHistoryRef = React.useRef(); React.useEff

我在react中有一个聊天应用程序,并且一直使用npm包react滚动到底部。但它没有维护和抛出警告,所以我认为自己写这篇文章应该不会太难。 我正在跟踪stackoverflow的各种答案,但似乎无法正确回答

当页面加载时,它应该只滚动到容器的底部

知道我做错了什么吗?提前谢谢! 编辑:现在我在树的末尾有一个div,它有ref,因为我认为滚动到它会更容易,而不是试图告诉一个div在里面滚动

const chatHistoryRef = React.useRef();

 React.useEffect(() => {
    window.scrollTo(0, chatHistoryRef.current.offsetTop);
  }, [chatHistoryRef]);

您的
useffect
没有任何依赖项,因此如果ref发生更改(如中所示,div被渲染),效果将不会运行。依赖项在第二个参数中设置为数组,如下所示:

useffect(()=>{
//使用chatHistoryRef.current执行某些操作
},[chatHistoryRef.current])

找到了解决方案。因为我现在正在我的应用程序中进行轮询,所以我每两秒钟只收到一次聊天信息。所以我的功能实际上是滚动,但没有任何东西可以滚动

这是我的解决方案。谢谢大家的帮助。通过向消息依赖项添加长度,仅当存在新的聊天消息时才会触发此操作

  const chatHistoryRef = React.useRef();

  React.useEffect(() => {
    chatHistoryRef.current.scrollIntoView({
      behavior: 'smooth',
      block: 'end'
    });
  }, [chatHistoryRef, messages.length]);

你知道吗,如果你的
if
语句被调用了?是的。刚刚用日志行52:6测试了它:React Hook React.useffect有一个不必要的依赖项:“chatHistoryRef.current”。哦,顺便说一句,它不应该是chatHistoryRef.current.scrollHeight吗?你直接打给裁判。