#javascript #reactjs
Вопрос:
Я хочу создать функцию, которая будет переключать состояние при нажатии определенной кнопки.
const keydown = () => {
window.addEventListener("keydown", (e) => {
if (e.code === "KeyY") {
setSortOpen(!sortOpen);
}
});
};
Здесь я ожидаю, что всякий раз, когда я нажимаю Y
кнопку, она переключает значение состояния, но то, что я получил, изменится только при первом щелчке, а остальная часть теста даст тот же результат.
Ответ №1:
import "./styles.css";
import React, { useState } from "react";
export default function App() {
const [sortOpen, setSortOpen] = useState(false);
window.addEventListener("keydown", (e) => {
if (e.code === "KeyY") {
setSortOpen(!sortOpen);
}
});
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
{sortOpen ? "true" : "false"}
<h2>Start editing to see some magic happen!</h2>
</div>
);
}
Я не уверен, как выглядит ваша реализация, но это работает для меня.
Ответ №2:
Лучше использовать useState
крючок, если вы хотите переключить состояние при нажатии кнопки.
Вот более подробная информация о useState
import { useState } from "react";
export default function App() {
const [sortOpen,setSortOpen] = useState(false);
const keydown = (event) => {
event.preventDefault();
setSortOpen(!sortOpen);
console.log(sortOpen);
};
return (
<div className="App">
<button onClick={keydown}>Click</button>
</div>
);
}