Javascript 使用React refs滚动到视图中

Javascript 使用React refs滚动到视图中,javascript,reactjs,dom,ref,react-dom,Javascript,Reactjs,Dom,Ref,React Dom,当用户关闭另一个组件时,我们尝试滚动到特定组件 我们的示例与下面的示例非常相似,取自 功能自定义组件(道具){ const items=[1,2,3,4].map((x,i)=>return( x+你好 ) 返回( {items} ); } 函数父级(道具){ 返回( ); } 类祖父母扩展了React.Component{ render(){ 返回( this.inputElement=el} /> ); } } 我们正在呈现一个大的卡片列表,希望能够通过调用this.refs[elem].

当用户关闭另一个组件时,我们尝试滚动到特定组件

我们的示例与下面的示例非常相似,取自

功能自定义组件(道具){
const items=[1,2,3,4].map((x,i)=>return(
x+你好
)
返回(
{items}
);
}
函数父级(道具){
返回(
);
}
类祖父母扩展了React.Component{
render(){
返回(
this.inputElement=el}
/>
);
}
}
我们正在呈现一个大的卡片列表,希望能够通过调用
this.refs[elem].scrollIntoView()滚动到特定的卡片

但我们的问题是调用this.refs会在所有级别返回一个空对象,因此我们无法附加到特定元素,然后在用户返回查看此组件时触发它


希望获得有关如何解决此问题的帮助。

您试图在哪里调用
this.refs[elem].scrollIntoView()
?您应该在
componentDidMount
componentDidUpdate
中使用
ref
s,而不是在
render
方法中使用
ref

我在我的祖父母组件中提供了一个下面写的if语句,从而解决了我的具体问题

inputRef={el => { 
  if (el && el.id == this.state.selectedBuildingRef) {
    this.myelement.scrollIntoView();
    window.scrollBy(0, -65);
  } 
}}

在我的真实示例中,我没有在任何级别使用函数组件。当您使用回调函数分配ref时,您不再使用this.refs来访问它,而是使用类变量名,如下所示。inputElement@ShubhamKhatri谢谢你,我们的大脑已经死了,我们看了你的评论,这真的帮助了我们。是的,我们已经试过了ng在没有任何运气的情况下做到了这一点,但还是设法解决了它!:)
inputRef={el => { 
  if (el && el.id == this.state.selectedBuildingRef) {
    this.myelement.scrollIntoView();
    window.scrollBy(0, -65);
  } 
}}