问题是您正在添加的新密钥
menuItem
给你的人对象。您需要在键周围添加括号:
const toggleMenu = (menuItem: keyof typeof people) => {
setPeople({ ...people, [menuItem]: !people[menuItem]
});
};
我已经将您的代码重构为可读性更强的版本,并实现了修复:
import { useEffect, useState } from "react";
interface Filter {
company: boolean;
gender: boolean;
}
export const App = () => {
const [filter, setFilter] = useState<Filter>({
company: false,
gender: false,
});
useEffect(() => {
console.log(filter);
}, []);
const toggleMenu = (filterKey: keyof Filter) => {
setFilter({ ...filter, [filterKey]: !filter[filterKey] });
};
return (
<div className="App">
<button
type="button"
className="flex flex-row justify-center w-full"
onClick={() => {
toggleMenu("company");
}}
>
Click me
</button>
</div>
);
};