💬

フルスタックTodoアプリを作る⑤ -useSWRを使用する-

2023/11/19に公開

useSWRでキャッシュ化されたデータフェッチングと、mutateを利用することで、フロントエンドでの編集、バックエンドも含めたリアルタイムの更新が可能になった。

const { data, isLoading, error, mutate } = useSWR(
"http://localhost:8080/allTodos",
fetcher
);

const handleEdit = async () => {
setIsEditing(!isEditing);
if (isEditing) {
const response = await fetch(
http://localhost:8080/editTodo/${todo.id}, {
method: "PUT",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(
{ title: editedTitle }
           ),
});

    if (response.ok) {
        const editedTodo = await response.json();
        mutate([...data, editedTodo]);
        setEditedTitle("");
    }
 }

};

return (
<label className="ml-3 block text-gray-900">
{isEditing ? (
<input
 type="text"
 className="border rounded py-1 px-2"
 value={editedTitle}
   onChange={(e) => setEditedTitle(e.target.value)}
/>
) : (
        <span className="text-lg font-medium mr-2"> 
{todo.title}
        </span>
)}
</label>


フロントエンド


データベース

Discussion