[英]Immutable Update React Hooks Array Object
我用鈎子成功地改變了菜單狀態,但是......
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}
。 通常當您調用.map()
而不是在數組上時會發生此錯誤。 你需要一個[]
來代替。
請嘗試以下操作:
const toggleParent = (key) => {
let data = [...menu];
data[key].permission = !data[key].permission;
setMenu(data);
};
我希望這有幫助!
您的代碼存在問題,您的菜單是一個數組,您正在為其分配一個對象並在其上使用地圖。
這是執行此操作的正確方法。
const toggleParent = (key) => {
let data = [...menu];
data[key].permission = !data[key].permission
setMenu(data);
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.