[英](React.js) Scroll through list using arrow keys
我正在開發一個自動完成組件,但我無法使用箭頭鍵(向下/向上)滾動,鼠標可以正常工作。
我對此進行了大量研究,並嘗試使用 refs 解決此問題,但沒有奏效。
const refs = filteredSuggestions.reduce((acc, value) => {
acc[value.id] = React.createRef();
return acc;
}, {});
被引用的地方
suggestionsListComponent = (
<ul class="suggestions">
{filteredSuggestions.map((suggestion, index) => {
let className;
if (index === activeSuggestion) {
className = "suggestion-active";
}
return (
<li ref={refs[suggestion.id]} className={className} key={suggestion} onClick={onClick}>
{suggestion}
</li>
);
})}
</ul>
);
完整代碼在這里: codeandbox
誰能幫我解決這個問題?
使用與swipe-react和wheel-react包中使用的配置相同的配置,輕松地將您的 React 組件與鍵盤箭頭鍵集成。
用法
安裝 npm 包:
npm install --save arrow-keys-react
導入它:
import ArrowKeysReact from 'arrow-keys-react';
在組件構造函數或渲染函數中配置箭頭鍵事件(“左”、“右”、“上”、“下”),至少其中之一:
ArrowKeysReact.config({ left: () => { console.log('left key detected.'); }, right: () => { console.log('right key detected.'); }, up: () => { console.log('up key detected.'); }, down: () => { console.log('down key detected.'); } });
4.與你的 React 組件集成:
<YourComponent {...ArrowKeysReact.events} />
例子
import React, { Component } from 'react';
import ArrowKeysReact from 'arrow-keys-react';
class App extends Component {
constructor(props){
super(props);
this.state = {
content: 'Use arrow keys on your keyboard!'
};
ArrowKeysReact.config({
left: () => {
this.setState({
content: 'left key detected.'
});
},
right: () => {
this.setState({
content: 'right key detected.'
});
},
up: () => {
this.setState({
content: 'up key detected.'
});
},
down: () => {
this.setState({
content: 'down key detected.'
});
}
});
}
render() {
return (
<div {...ArrowKeysReact.events} tabIndex="1">
{this.state.content}
</div>
);
}
}
export default App;
評論
div
,添加tabIndex
屬性。focus()
。ArrowKeysReact.config
可以放在render
函數中,而不是在constructor
函數中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.