Я делаю приложение, которое отображает 3D-объекты при нажатии на клавиатуру. Я бы хотел, чтобы эти объекты исчезли через 2-3 секунды или когда анимация закончится.
Это компонент, который обрабатывает нажатую клавишу logi c:
const Selector = () => {
const [selector, setSelector] = useState(null);
useEffect(() => {
function setupKeyLogger() {
document.onkeydown = function (e) {
console.log(e);
switch (e.keyCode) {
case 65:
setSelector('SpinningCube');
break;
case 83:
setSelector('SmallCube');
break;
default:
break;
}
};
}
setupKeyLogger();
});
switch (selector) {
case 'SpinningCube':
return (
<>
<SpinningCube />
</>
);
case 'SmallCube':
return (
<>
<SmallCube />
</>
);
default:
return <></>;
}
};
Прямо сейчас он переключается между двумя объектами <SpinningCube />
и <SmallCube />
, когда я нажимаю две разные клавиши. Однако, если я спамлю ключ, он отображает компонент только при первом нажатии клавиши. Я хочу, чтобы он повторно отображал и перезапускал анимацию компонента каждый раз, когда я нажимаю клавишу, даже если она повторяется снова и снова. Я предполагаю, что мне нужен способ размонтировать, а затем повторно установить компонент при каждом нажатии клавиши?
Я использую Three и React Spring для обработки своих анимаций.