在我的React组件中,我正在显示项目列表 - 每个项目都在其自己的DIV元素中,每个项目具有唯一的ID,即<div id="abc-123">
。滚动到特定项目
我还使用react-perfect-scrollbar
使整个事情更好看。
我在我的减速器中保存一个名为activeElementId
的变量,当activeElementId
的值发生变化时,我想自动滚动到屏幕上的该项目。
设置activeElementId
是很容易的部分,但我不确定如何滚动到该元素,并会欣赏一些指针。
这是包含ListComponent
的父组件。
class MyComponent extends Component {
constructor(props) {
super(props);
}
render() {
return(
<div>
{this.props.items.length > 0
?
<PerfectScrollBar>
<ListComponent items={this.props.items} />
</PerfectScrollBar>
: null}
</div>
);
}
}
我ListComponent
是一个表象的成分:
const ListComponent = ({ items }) => {
return(
<ul className="pretty-list">
{items.map(item => <ItemComponents item={item} />)}
</ul>
);
}
export default ListComponent;
而且ItemComponent
是一个表象的组成部分,也是:
const ItemComponent = ({ Item }) => {
return(
<li>
<div id={item.id}>
{item.someProperty}
</div>
</li>
);
}
export default ItemComponent;
我真的很喜欢保持ListComponent
的想法和ItemComponent
独立和作为表示组件,这有助于保持代码更简单,更易于管理。不知道这是否会让实现自动滚动逻辑变得困难。
完美!谢谢。快速跟进:我想在不使用jQuery的情况下为滚动添加动画。我检查了'setScrollTop'的文档,但我没有看到动画的参考。你能指出我在这方面的正确方向吗?再次感谢。 – Sam
@Sam很高兴它的工作,但我恐怕没有任何关于该主题的经验/知识。试着做一些更多的研究,如果没有出现,开放一个新的问题将是一个好主意。 – bennygenel