javascript 如何在底部滚动React按钮

5us2dqdw  于 2023-03-28  发布在  Java
关注(0)|答案(5)|浏览(116)

我试图向下滚动用户在底部时,用户点击按钮。我真的很努力,但没有找到任何解决方案。有人可以请帮助我如何实现我的目标。
谢谢

ruoxqz4g

ruoxqz4g1#

您可以使用document.body.offsetHeight来获取页面的高度,并使用windows.scroll滚动到它。如果您需要支持IE11及更低版本,请使用window.scroll(0, document.body.offsetHeight);

import React from 'react';

function App() {

  function handleScroll() {
    window.scroll({
      top: document.body.offsetHeight,
      left: 0, 
      behavior: 'smooth',
    });
  }

  return <button type="button" onClick={handleScroll}>Scroll</button>;

}
fhity93d

fhity93d2#

有几种方法可以实现这一点:

const onClick = () => {
  window.scroll({
    bottom: document.body.scrollHeight, // or document.scrollingElement || document.body
    left: 0,
    behavior: 'smooth'
  });
}

...

return <button onClick={onClick} ... />

另一种方法是使用ref。您需要在页面底部添加一个元素,并在单击按钮后滚动到它:

const bottomRef = React.useRef();

const onClick = () => {
  bottomRef.current.scrollIntoView();
}

...

return (
  <div className="container">
    <button onClick={onClick} />
 
    <div className="bottomContainerElement" ref={bottomRef} />
  <div>
)
3zwjbxry

3zwjbxry3#

安装react-scroll-button npm包

npm i react-scroll-button

使用代码

import React, {Component} from 'react'
import ScrollButton from 'react-scroll-button'
 
class ScrollComponent extends Component {
    render() {
        return (
            <ScrollButton 
                behavior={'smooth'} 
                buttonBackgroundColor={'red'}
                iconType={'arrow-up'}
                style= {{fontSize: '24px'}}
            />
        );
    }
}
pexxcrt2

pexxcrt24#

你可以使用useRef钩子来抓取特定的div。这是react和使用react钩子最推荐的方法。

App.js

import React, { useRef } from "react";
import "./styles.css";

export default function App() {
  const divRef = useRef();

  return (
    <div className="App">
      <button
        onClick={() => {
          divRef.current.scrollIntoView({ behavior: "smooth" });
        }}
      >
        Scroll to Bottom
      </button>
      <div className="bigDiv" />
      <div className="bigDiv" />
      <div className="bigDiv" />
      <div className="bigDiv" ref={divRef}>
        Scrolled Here
      </div>
    </div>
  );
}

Styles.css

.App {
  font-family: sans-serif;
  text-align: center;
}
.bigDiv {
  height: 100vh;
  width: 100%;
  background: cyan;
  border: 1px solid violet;
}
dzhpxtsq

dzhpxtsq5#

只需将此函数放在单击事件上

const onButtonClick = () => {
  scroll.current?.scrollIntoView({ behaviour: "smooth" });
  };

相关问题