私のリアクションコンポーネントでは、アイテムのリストを表示しています。それぞれのアイテムは、独自のIDを持つDIVエレメント(<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;
I本当にListComponent
と別々ItemComponent
を維持する考えのようにとこれはコードをシンプルで簡単に管理するのに役立ちます。それが自動スクロールロジックを実装するのが難しいかどうかは確かではありません。
パーフェクト!ありがとうございました。簡単なフォローアップ:jQueryを使わずにスクロールにアニメーションを追加したいと思います。私は 'setScrollTop'のドキュメントをチェックしましたが、アニメーションへの参照はありません。これについて正しい方向に私を指摘できますか?再度、感謝します。 – Sam
@Samはうまくいきましたがうれしいですが、私はその話題に関する経験や知識がありません。もう少し研究をしてみてください。新しい質問を開くことが何も起きなければ、良いアイデアになるでしょう。 – bennygenel