Я использую материал-интерфейс для создания электронного приложения.Некоторые экраны являются мастер-деталями, и я использую список, чтобы показать обзор.Я хотел бы сделать возможным перемещение по этому списку с помощью клавиш со стрелками.Есть ли встроенная опция для этого?
Если она не встроена, каков лучший способ сделать это?
Обновление: Я сделал свой собственный компоненттеперь.Не уверен, что это лучшее решение, но, кажется, работает:
export default function NavigateList(props) {
const { children, data, ...other } = props;
const elements = data.map((val, i) => children(val, i));
function gotoPrevElement() {
const selected = elements.findIndex(e => e.props.selected);
if (selected > 0) {
const el = elements[selected - 1];
el.props.onClick(data[selected - 1]);
}
}
function gotoNextElement() {
const selected = elements.findIndex(e => e.props.selected);
if (selected > -1 && selected < elements.length - 1) {
const el = elements[selected + 1];
el.props.onClick(data[selected + 1]);
}
}
function handleKey(e) {
if (e.key === "ArrowDown") {
gotoNextElement();
}
if (e.key === "ArrowUp") {
gotoPrevElement();
}
}
return (
<List onKeyDown={handleKey} {...other}>
{elements}
</List>
);
}
Вот пример, как его можно использовать:
<NavigateList data={people}>
{(p, i) => (
<ListItem
button
key={i}
selected={checkIfSelected(p)}
onClick={e => setSelected(p)}
>
<ListItemText
primary={p.primary}
secondary={p.secondary}
/>
</ListItem>
)}
</NavigateList>