You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React中点击按钮滚动到指定div元素功能失效如何解决

问题原因及修复方案

核心问题

你调用的scrollTo()方法是用于滚动当前元素内部的内容的,而你要实现的是「滚动页面到指定元素所在位置」,应该调用Element.scrollIntoView()方法。

其他潜在问题

  • 你绑定ref的目标div没有设置高度、也没有子内容,元素高度为0的情况下无法被正常定位
  • React中元素的类名属性要写className而非class,否则属性不会被正常识别

修复后代码

import React, { useRef } from 'react'

function TeamOld() {
    const myRef = useRef(null)

    const scrollToTarget = () => {
        // 先判空避免ref未初始化报错
        if(myRef.current) {
            // 滚动到元素位置,behavior设为smooth可以实现平滑滚动
            myRef.current.scrollIntoView({ behavior: 'smooth', block: 'start' })
            console.log("Test")
        }
    }

    return (
        <div>
                <button className="button is-primary is-outlined mr-4 mb-2" onClick={scrollToTarget}>Click me</button>
            {/* 这里是页面其他内容,建议添加足够多的内容撑开页面高度,才能看到滚动效果 */}
            <div style={{ width: "100%", height: "200px", marginTop: "1000px" }} ref={myRef}>
                目标元素
            </div>
        </div>
    )
}
export default TeamOld

额外说明

scrollIntoView的常用配置参数:

  • behavior:滚动动效,可选值为auto(无动画直接跳转)、smooth(平滑滚动)
  • block:垂直方向对齐规则,可选值为start(元素顶部对齐视口顶部)、center(元素在视口居中)、end(元素底部对齐视口底部)

如果你实际需求是滚动目标div内部的内容到顶部,需要先给该div设置固定高度和overflow: auto属性,同时确保div内部有足够多的内容触发滚动,再调用myRef.current.scrollTo(0, 0)即可生效。

内容的提问来源于stack exchange,提问作者Test

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 02:45:03