icon: faSun },
{ value: "Важно", id: "important", switched: "", icon: faStar },
{
value: "Запланировано",
id: "planned",
switched: "",
icon: faCalendar,
},
{ value: "Задачи", id: "tasks", switched: "", icon: faHouse },
];
Как можно следить за всеми switched в useEffect?
у тебя весь стейт имутабельный ведь? Если да, то следи за массивом, и все
const [navList, setNavList] = useState(() => { const localList = JSON.parse(localStorage.getItem("navList") as string); if (localList) { return localList; } else { return defaultNavbarList; } }); У меня такой стейт (не знаю, насколько норм так писать). defaultNavbarList это тот список, который я скинул выше
const handleSwitchOnList = (id: string) => { navList.map((elem: INavLink) => { if (elem.id === id) elem.switched = "switchedOn" if (elem.id !== id) elem.switched = "" return elem }); setNavList(navList) } Вот так я меняю свойство switched, а потом стейт
У тебя стейт это массив, и он у тебя имутабельный, поэтому, когда ты будешь менять стейт через setNavlist ты, то все равно весь массив изменится, поэтому тебе надо следить лишь за navList в useEffect, и все
Не правильно делаешь ведь, так не делается, ты тут мутируешь стейт, так не правильно делать
Вариант с () => navList тоже не работает
Обсуждают сегодня