// indexで操作していた(配列依存)
const toggleTask = (index: number) => {
const newTasks = [...tasks];
// indexで直接アクセス(危険)
newTasks[index].done = !newTasks[index].done;
setTasks(newTasks);
};
👉 問題点
・削除するとindexがズレる
・違うタスクに影響する
// idベースで管理
const toggleTask = (id: number) => {
setTasks((prev) =>
prev.map((task) =>
task.id === id
? { ...task, done: !task.done } // 対象だけ更新
: task
)
);
};
👉 学び
配列操作は「index」ではなく「id」で管理する
// LocalStorageとDBが混在
useEffect(() => {
const savedTasks = localStorage.getItem("tasks");
if (savedTasks) {
setTasks(JSON.parse(savedTasks));
}
}, []);
👉 問題
・DBで削除 → LocalStorageで復活
// DBを正として管理
useEffect(() => {
fetchTasks();
}, []);