2 回答
TA贡献1936条经验 获得超6个赞
我知道这里有一个可接受的答案,但我认为使用
<ListItem autoFocus={true}/>
会将该列表项滚动到视图中。将列表项设置为选中的相同逻辑也可用于设置autoFocus
属性。
TA贡献1777条经验 获得超10个赞
保持对List的引用,然后单击ListItem,根据以下内容计算需要滚动的量:
列表项高度
所选项目的索引
可见列表项的数量。
const scrollableListRef = React.createRef();
function Row(props) {
const { index, style } = props;
const placeSelectedItemInTheMiddle = (index) => {
const LIST_ITEM_HEIGHT = 46;
const NUM_OF_VISIBLE_LIST_ITEMS = 9;
const amountToScroll = LIST_ITEM_HEIGHT * (index - (NUM_OF_VISIBLE_LIST_ITEMS / 2) + 1) ;
scrollableListRef.current.scrollTo(amountToScroll, 0);
}
return (
<ListItem button style={style} key={index}
onClick={() => {placeSelectedItemInTheMiddle(index)}}>
<ListItemText primary={`Item ${index + 1}`} />
</ListItem>
);
}
添加回答
举报