source: pages/todo/TodoList.tsx@ 8ee4553

main
Last change on this file since 8ee4553 was 8ee4553, checked in by Bati <no-reply@…>, 7 months ago

scaffold Vike app with Bati

  • Property mode set to 100644
File size: 1.0 KB
RevLine 
[8ee4553]1import type { Data } from "./+data";
2import { onNewTodo } from "./TodoList.telefunc";
3import { useState } from "react";
4import { useData } from "vike-react/useData";
5
6export function TodoList() {
7 const { todoItemsInitial } = useData<Data>();
8 const [todoItems, setTodoItems] = useState<{ text: string }[]>(todoItemsInitial);
9 const [newTodo, setNewTodo] = useState("");
10 return (
11 <>
12 <ul>
13 {todoItems.map((todoItem, index) => (
14 // biome-ignore lint: example
15 <li key={index}>{todoItem.text}</li>
16 ))}
17 </ul>
18 <div>
19 <form
20 onSubmit={async (ev) => {
21 ev.preventDefault();
22
23 const text = newTodo;
24 setTodoItems((prev) => [...prev, { text }]);
25 setNewTodo("");
26
27 await onNewTodo({ text });
28 }}
29 >
30 <input type="text" onChange={(ev) => setNewTodo(ev.target.value)} value={newTodo} />
31 <button type="submit">Add to-do</button>
32 </form>
33 </div>
34 </>
35 );
36}
Note: See TracBrowser for help on using the repository browser.