import { trpc } from "../../trpc/client"; import { useState } from "react"; export function TodoList({ initialTodoItems }: { initialTodoItems: { text: string }[] }) { const [todoItems, setTodoItems] = useState(initialTodoItems); const [newTodo, setNewTodo] = useState(""); return ( <>
{ ev.preventDefault(); // Optimistic UI update setTodoItems((prev) => [...prev, { text: newTodo }]); try { await trpc.onNewTodo.mutate(newTodo); setNewTodo(""); } catch (e) { console.error(e); // rollback setTodoItems((prev) => prev.slice(0, -1)); } }} > setNewTodo(ev.target.value)} value={newTodo} />
); }