fix(task): replace Date.now with nanoid for unique keys and update task interface
This commit is contained in:
+9
-10
@@ -1,5 +1,6 @@
|
||||
import { useCallback, useEffect, useState } from "react";
|
||||
import type { Task } from "../types/task";
|
||||
import { nanoid } from "nanoid";
|
||||
|
||||
export const useTasks = () => {
|
||||
const [tasks, setTasks] = useState<Task[]>(() => {
|
||||
@@ -15,26 +16,24 @@ export const useTasks = () => {
|
||||
if (title.trim() === '') return;
|
||||
|
||||
const newTask: Task = {
|
||||
id: Date.now(),
|
||||
title: title,
|
||||
id: nanoid(),
|
||||
title,
|
||||
completed: false,
|
||||
createdAt: new Date().toISOString()
|
||||
};
|
||||
|
||||
setTasks([...tasks, newTask]);
|
||||
|
||||
|
||||
setTasks(prev => [...prev, newTask]);
|
||||
};
|
||||
|
||||
const deleteTask = useCallback((id: number) => {
|
||||
setTasks(tasks.filter(task => task.id !== id));
|
||||
const deleteTask = useCallback((id: string) => {
|
||||
setTasks(prev => prev.filter(task => task.id !== id));
|
||||
}, []);
|
||||
|
||||
const toggleTask = useCallback((id: number) => {
|
||||
setTasks(tasks.map(task =>
|
||||
const toggleTask = useCallback((id: string) => {
|
||||
setTasks(prev => prev.map(task =>
|
||||
task.id === id ? { ...task, completed: !task.completed } : task
|
||||
));
|
||||
}, []);
|
||||
|
||||
|
||||
return { tasks, addTask, deleteTask, toggleTask };
|
||||
};
|
||||
Reference in New Issue
Block a user