当前位置: 首页 > 面试题库 >

如何滚动到一个元素?

田慈
2023-03-14
问题内容

我有一个聊天小部件,每次向上滚动时,它都会拉出一系列消息。我现在面临的问题是,在加载消息时,滑块保持固定在顶部,我希望它专注于上一个数组中的最后一个索引元素。我发现可以通过传递索引来创建动态引用,但是我还需要知道要使用哪种滚动功能才能实现这一点

 handleScrollToElement(event) {
    const tesNode = ReactDOM.findDOMNode(this.refs.test)
    if (some_logic){
      //scroll to testNode      
    }
  }

  render() {

    return (
      <div>
        <div ref="test"></div>
      </div>)
  }

问题答案:

React 16.8 +,功能组件

const scrollToRef = (ref) => window.scrollTo(0, ref.current.offsetTop)   
// General scroll to element function

const ScrollDemo = () => {

   const myRef = useRef(null)
   const executeScroll = () => scrollToRef(myRef)

   return (
      <> 
         <div ref={myRef}>I wanna be seen</div> 
         <button onClick={executeScroll}> Click to scroll </button> 
      </>
   )
}

React 16.3 +,Class组件

class ReadyToScroll extends Component {

    constructor(props) {
        super(props)
        this.myRef = React.createRef()  
    }

    render() {
        return <div ref={this.myRef}></div> 
    }

    scrollToMyRef = () => window.scrollTo(0, this.myRef.current.offsetTop)   
    // run this method to execute scrolling.

}

类组件-Ref回调

class ReadyToScroll extends Component {
    myRef=null
    // Optional

    render() {
        return <div ref={ (ref) => this.myRef=ref }></div>
    }

    scrollToMyRef = () => window.scrollTo(0, this.myRef.offsetTop)
    // run this method to execute scrolling. 
}

不要使用字符串引用。

字符串引用会损害性能,不可组合且即将淘汰(2018年8月)。

字符串引用存在一些问题,被认为是旧问题,并且很可能在将来的发行版之一中删除。[官方React文档]

可选:平滑滚动动画

/* css */
html {
    scroll-behavior: smooth;
}

将ref传递给孩子

我们希望ref附加到dom元素上,而不是附加到react组件上。因此,当将其传递给子组件时,我们无法命名prop ref。

const MyComponent = () => {
    const myRef = useRef(null)
    return <ChildComp refProp={myRef}></ChildComp>
}

然后将ref prop附加到dom元素。

const ChildComp = (props) => {
    return <div ref={props.refProp} />
}


 类似资料:
  • 问题内容: 我有一个聊天小部件,每次向上滚动时,它都会拉出一系列消息。我现在面临的问题是加载消息时滑块固定在顶部。我希望它专注于上一个数组中的最后一个索引元素。我发现可以通过传递索引来创建动态引用,但是我还需要知道使用哪种滚动功能来实现这一点 问题答案: 单击此处,获得有关StackBlits的完整演示 React 16.3 +,Class组件 类组件-Ref回调 不要使用字符串引用。 字符串引用

  • 问题内容: 我正在尝试将页面移至某个元素。 我尝试下一个代码无济于事: 问题答案: 您可以使用锚点来“聚焦” div。即: 然后使用以下javascript:

  • 有什么更好的策略来处理这个问题呢?我们使用pagefactory模式,主要使用xpath、可访问性标签和id来标识元素。如果有帮助,测试中的应用程序是react原生应用程序。

  • 问题内容: 我想将一个DIV元素移到另一个元素中。例如,我要移动此对象(包括所有子对象): 到这个: 这样我有: 问题答案: 曾经尝试过普通的JavaScript … 吗?

  • 问题内容: 我有一个滚动条,当我单击它时我想要一个链接,它将迫使其滚动以查看其中的元素。我这样写它的JavasSript: 但这会在滚动页面的同时滚动所有页面。如何解决? 我想这样说 问题答案: 您需要获取要滚动到视图中的元素相对于其父元素(滚动div容器)的顶部偏移量: 现在,将变量topPos设置为滚动div的顶部与希望显示的元素之间的距离(以像素为单位)。 现在,我们告诉div使用以下命令滚

  • 问题内容: 我想将一个DIV元素移到另一个元素中。例如,我要移动此对象(包括所有子对象): 到这个: 这样我有: 问题答案: 曾经尝试过普通的JavaScript … 吗?