fix: prevent infinite re-render loop in task selection useEffect (#442)
* fix: prevent infinite re-render loop in task selection useEffect The useEffect for syncing selectedTask was causing infinite re-renders because: 1. selectedTask object was in the dependency array 2. setSelectedTask(updatedTask) created new reference 3. New reference triggered effect again → infinite loop Fix: - Add reference equality check (updatedTask !== selectedTask) - Remove selectedTask from dependency array (keep only ID/specId) Fixes #441 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> Signed-off-by: Abe Diaz (@abe238) <abe238@gmail.com> * chore: add ESLint disable comment for intentional dependency omission Address code review feedback from Gemini Code Assist: explicitly acknowledge the intentional omission of selectedTask object from the dependency array to satisfy react-hooks/exhaustive-deps rule. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> Signed-off-by: Abe Diaz (@abe238) <abe238@gmail.com> --------- Signed-off-by: Abe Diaz (@abe238) <abe238@gmail.com> Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> Co-authored-by: Alex <63423455+AlexMadera@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
c15bb31146
commit
2effa53517
@@ -392,11 +392,12 @@ export function App() {
|
||||
const updatedTask = tasks.find(
|
||||
(t) => t.id === selectedTask.id || t.specId === selectedTask.specId
|
||||
);
|
||||
if (updatedTask) {
|
||||
if (updatedTask && updatedTask !== selectedTask) {
|
||||
setSelectedTask(updatedTask);
|
||||
}
|
||||
}
|
||||
}, [tasks, selectedTask?.id, selectedTask?.specId, selectedTask]);
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps -- Intentionally omit selectedTask object to prevent infinite re-render loop
|
||||
}, [tasks, selectedTask?.id, selectedTask?.specId]);
|
||||
|
||||
const handleTaskClick = (task: Task) => {
|
||||
setSelectedTask(task);
|
||||
|
||||
Reference in New Issue
Block a user