React:如何使用向上/向下箭头选择滚动列表中的上一个/下一个项目并使列表滚动以将所选元素保留在屏幕上

时间:2017-08-15 14:53:41

标签: javascript html css reactjs web-deployment

我正在使用react-infinite滚动列表,我实现了一个向上/向下箭头处理程序:

onKeyDown = (e) => {
    if(e.keyCode === 40){
        if (this.props.onKeyDown) {
            e.preventDefault()
            this.props.onKeyDown()
        }
    }
    else if (e.keyCode === 38) {
        if (this.props.onKeyUp) {
            e.preventDefault()
            this.props.onKeyUp()
        }
    }
}

(该组件在我的应用程序中可重复使用,因此我通过道具传递实际功能)

这适用于选择列表中的下一个/上一个项目。但是当您到达滚动列表的边缘并继续前进时,列表不会滚动以保持所选项目在视图中。所选项目将在屏幕外消失。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

您需要方法scrollIntoView。它存在于每个元素上。此外,您需要通过获取元素的offsetTop并与组件的offsetHeight进行比较来检测元素何时在屏幕外呈现,当此数字高于组件的offsetHeight时,您需要滚动它进入视野。