我成功更改了菜单状态,但带有钩子,但是...
const [menu, setMenu] = useState([
{
parent: 'User',
permission: false,
children:[
{name: 'Vendor', permission: false, readonly: true},
{name: 'Client', permission: false, readonly: true},
{name: 'User', permission: false, readonly: true},
]
}
]);
const toggleParent = (key) => {
let data = {...menu};
data[key].permission = !data[key].permission
setMenu(data);
};
最终导致映射功能出错,它说:
menu.map不是函数
这里是映射函数:
{menu.map((value, key) => (
<Switch
checked={value.permission}
onChange={() => toggleParent(key)}
color="primary"
name="checkedB"
inputProps={{ 'aria-label': 'primary checkbox' }}
/>
))}
我认为问题出在{...menu}
。您需要一个数组。
尝试以下操作:
const toggleParent = (key) => {
let data = [...menu];
data[key].permission = !data[key].permission;
setMenu(data);
};
我希望这会有所帮助!