不可变更新React Hooks数组对象

问题描述 投票:0回答:1

我成功更改了菜单状态,但带有钩子,但是...

  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' }}
                    />
                  ))}
javascript reactjs react-hooks immutability
1个回答
0
投票

我认为问题出在{...menu}。您需要一个数组。

尝试以下操作:

const toggleParent = (key) => {
    let data = [...menu];
    data[key].permission = !data[key].permission;
    setMenu(data);
};

我希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.