我有一个聊天窗口小部件,每次我向上滚动时都会弹出一系列消息。我现在面临的问题是,当消息加载时,滑块固定在顶部。我希望它关注上一个数组中的最后一个索引元素。我发现我可以通过传递索引来生成动态引用,但我还需要知道使用什么样的滚动函数来实现这一点
handleScrollToElement(事件){
const tesNode=ReactDOM.findDOMNode(this.refs.test)
如果(某些逻辑){
//滚动到testNode
}
}
render(){
返回(
<;div>;
<;div ref=“test”>;lt;/div>;
<;/div>;)
}
反应16.8+,功能部件
constscrolldemo=()=>;{
常量myRef=useRef(空)
const executeScroll=()=>;myRef.current.scrollIntoView()
//从事件处理程序或效果运行此函数以执行滚动
返回(
<;>;
<;div ref={myRef}>;元素滚动到<;/div>;
<;button onClick={executeScroll}>;单击以滚动<;/button>;
<;/>;
)
}
单击此处查看StackBlits的完整演示
反应16.3+,级组件
类ReadyToScroll扩展组件{
建造师(道具){
超级(道具)
this.myRef=React.createRef()
}
render(){
返回<;div ref={this.myRef}>;元素以滚动到<;/div>;
}
executeScroll=()=>;this.myRef.current.scrollIntoView()
//运行此方法以执行滚动。
}
类组件-Ref回调
类ReadyToScroll扩展组件{
render(){
返回<;div ref={(ref)=>;this.myRef=ref}>;元素以滚动到<;/div>;
}
executeScroll=()=>;this.myRef.scrollIntoView()
//运行此方法以执行滚动。
}
不要使用字符串引用
字符串引用损害性能,不可组合,并且正在退出(2018年8月)
字符串引用有一些问题,被认为是遗留的,并且很可能
将在将来的某个版本中删除。[正式文件]
资源1资源2
可选:平滑滚动动画
/*css*/
html{
滚动行为:平滑;
}
把裁判传给孩子
我们希望将ref附加到dom元素,而不是react组件。因此,当将其传递给子组件时,我们无法命名prop ref
常量MyComponent=()=>;{
常量myRef=useRef(空)
return<;ChildComp refProp={myRef}>;<;/ChildComp>;
}
然后将ref prop附加到dom元素
const ChildComp=(道具)=>;{
return<;div ref={props.refProp}/>;
}