Skip to content

Commit a2ee600

Browse files
committed
Naprawiono ostrzeżenia i błędy hooków React
- Użyj useMemo do początkowego formData w EditTask i EditUser - Oddziel useEffect dla aktualizacji formData, aby uniknąć kaskadowego renderowania - Dodano komentarze eslint-disable dla ostrzeżeń biblioteki niezgodnej z tabelą TanStack - Naprawiono ostrzeżenia setState w trakcie działania
1 parent db1e072 commit a2ee600

4 files changed

Lines changed: 21 additions & 21 deletions

File tree

src/components/tasks/EditTask.tsx

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useState, useEffect } from 'react';
1+
import { useState, useEffect, useMemo } from 'react';
22
import { useTaskStore } from '../../store/taskStore';
33
import type { Task } from '../../types/task';
44

@@ -10,30 +10,28 @@ interface EditTaskProps {
1010

1111
export default function EditTask({ task, onClose, onSuccess }: EditTaskProps) {
1212
const { updateTask, users, fetchUsers } = useTaskStore();
13-
const [formData, setFormData] = useState({
13+
14+
const initialFormData = useMemo(() => ({
1415
title: task.title,
1516
description: task.description || '',
1617
priority: task.priority,
1718
status: task.status,
1819
user_id: task.user_id,
1920
start_date: task.start_date ? new Date(task.start_date).toISOString().split('T')[0] : '',
2021
end_date: task.end_date ? new Date(task.end_date).toISOString().split('T')[0] : '',
21-
});
22+
}), [task]);
23+
24+
const [formData, setFormData] = useState(initialFormData);
2225
const [error, setError] = useState<string | null>(null);
2326
const [loading, setLoading] = useState(false);
2427

2528
useEffect(() => {
2629
fetchUsers();
27-
setFormData({
28-
title: task.title,
29-
description: task.description || '',
30-
priority: task.priority,
31-
status: task.status,
32-
user_id: task.user_id,
33-
start_date: task.start_date ? new Date(task.start_date).toISOString().split('T')[0] : '',
34-
end_date: task.end_date ? new Date(task.end_date).toISOString().split('T')[0] : '',
35-
});
36-
}, [task, fetchUsers]);
30+
}, [fetchUsers]);
31+
32+
useEffect(() => {
33+
setFormData(initialFormData);
34+
}, [initialFormData]);
3735

3836
const handleSubmit = async (e: React.FormEvent) => {
3937
e.preventDefault();

src/components/tasks/TaskTable.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@ export default function TaskTable() {
201201
[deletingTaskId, user, handleDelete]
202202
);
203203

204+
// eslint-disable-next-line react-hooks/incompatible-library
204205
const table = useReactTable({
205206
data: tasks,
206207
columns,

src/components/users/EditUser.tsx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,21 @@ interface EditUserProps {
1010

1111
export default function EditUser({ user, onClose, onSuccess }: EditUserProps) {
1212
const { updateUser } = useUsersStore();
13-
const [formData, setFormData] = useState({
13+
14+
const initialFormData = useMemo(() => ({
1415
full_name: user.full_name || '',
1516
role: user.role,
1617
active: user.active,
17-
});
18+
}), [user]);
19+
20+
const [formData, setFormData] = useState(initialFormData);
1821
const [error, setError] = useState<string | null>(null);
1922
const [loading, setLoading] = useState(false);
2023

24+
// Update form data when user prop changes
2125
useEffect(() => {
22-
setFormData({
23-
full_name: user.full_name || '',
24-
role: user.role,
25-
active: user.active,
26-
});
27-
}, [user]);
26+
setFormData(initialFormData);
27+
}, [initialFormData]);
2828

2929
const handleSubmit = async (e: React.FormEvent) => {
3030
e.preventDefault();

src/components/users/UsersTable.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ export default function UsersTable() {
122122
[deletingUserId, handleDelete]
123123
);
124124

125+
// eslint-disable-next-line react-hooks/incompatible-library
125126
const table = useReactTable({
126127
data: users,
127128
columns,

0 commit comments

Comments
 (0)