私は無限のリストを持っています(コンポーネントInfiniteLoader
を使用List
し、素晴らしいreact-virtualized
ライブラリから)。ユーザーが生成したイベントに応答するために、特定の行までスクロールしたいと考えています。
これは私のコードです:
class Weeks extends Component {
constructor(props) {
super(props)
this.state = {
week_count: 10,
}
auto_bind(this)
}
is_week_loaded(week) {
return week < this.state.week_count
}
load_more_weeks() {
this.setState({week_count: this.state.week_count + 1})
}
scroll_to_week(week) {
if (this.state.week_count <= week) {
this.setState({week_count: week + 1})
}
this.list.scrollToRow(week)
}
render_week({key, index, style}) {
return (
<div key={key} style={style}>
<Week week={index}/>
</div>
)
}
render() {
return (
<AutoSizer>
{({height, width}) => (
<InfiniteLoader
isRowLoaded={this.is_week_loaded}
loadMoreRows={this.load_more_weeks}
rowCount={this.state.week_count + 1}
>
{({onRowsRendered, registerChild}) => (
<List
height={height}
width={width}
onRowsRendered={onRowsRendered}
ref={(list) => {
this.list = list
registerChild(list)
}}
rowCount={this.state.week_count}
rowHeight={row_height}
rowRenderer={this.render_week}
/>
)}
</InfiniteLoader>
)}
</AutoSizer>
)
}
}
ただし、次のエラーが表示されます。
Uncaught TypeError: this.list.scrollToRow is not a function
メソッドを呼び出すときscroll_to_week
。
ドキュメントhttps://github.com/bvaughn/react-virtualized/blob/master/docs/reverseList.mdから、行インデックスにスクロールするのが正しい方法だと思いました。
ご協力いただきありがとうございます。