我想在渲染后使用ref回调滚动到数组中的元素。
根据状态,它将基于this.state.scrollToId
滚动到其他元素。
但我认为以下代码中的回调未在componentDidUpdate
P.S。 Item
是自定义组件。
我也尝试过componentDidMount
。
class A extends React.Component{
//...
state = { scrollToId: null}
scrollToMyRef = (myRef) =>{
window.scrollTo(0, myRef.current.offsetTop)
}
constructor(props) {
super(props)
this.itemRefs = {};
this.setItemRef = (element, id) => {
this.itemRefs[id] = element;
}
}
componentDidUpdate(){
if (this.state.scrollToId){
scrollToMyRef(this.itemRefs[this.state.scrollToId])
}
render(){
return (
<div>
{
this.state.aList.map((item)=>{
return (
<Item ref={(element) => {this. setItemRef(element, item.id)}}
</Item>
)
})
}
</div>)
}
}
itemRef[id]
未定义,并在scrollToMyRef
上引发异常