在我的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