Shuheitkhs / todo-app

react中級todo-appの作業
0 stars 0 forks source link

レビュー② 全体 #2

Open washogo opened 3 months ago

washogo commented 3 months ago

やること

▼TODOリスト内の各TODOにほしい要素

▼ほしい機能

▼余裕があれば以下のようなカスタマイズをする

レビュー

TODOの削除・TODOの編集機能

現実装では以下のような状況です。

原因は、todoを新規に追加した場合にidプロパティがドキュメントのidとなっていないからですね。

そのため、src/components/AddTodo.tsxのtodoを追加する処理がありますが、

  const addTodo = async () => {
    console.log("addTodo called"); // 関数呼び出し確認
    const newTodo: Todo = {
      id: uuidv4(),
      title,
      status: "未着手",
      details,
    };
    // 作ったものを配列に加える
    try {
      console.log("デバッグ用、Firestoreに追加");
      const docRef = await addDoc(collection(db, "todos"), newTodo);
      console.log("デバッグ用、idと一緒に記載: ", docRef.id);

      setTodoList([...todoList, newTodo]);
      // 追加後フォームのクリア
      setTitle("");
      setDetails("");
    } catch (e) {
      console.error("Error adding document: ", e);
    }
  };

以下の箇所のnewTodoiddocRef.idに変更する必要がありますね!

setTodoList([...todoList, newTodo]);
washogo commented 3 months ago

コードレビュー

改善ポイント

  1. Reactのインポートは不要です!

    1. 理由
      1. React v17から記述が不要となったため
      2. https://qiita.com/Yz_4230/items/ce70927d36f7a6cf619d
    2. 対象コード例
          import React, { useState, useEffect } from "react";
  2. 定義された変数や関数が呼び出し元でどのようなものか分かるようにjsDocを使ってコメントを書くと良いです!

    1. https://zenn.dev/overflow_offers/articles/20230220-how-to-use-js-doc
  3. src/App.tsxについて

    1. 以下の記述はuseRecoilStateで1つにまとめることができますね!

        const setTodoList = useSetRecoilState(todoListState);
        const todoList = useRecoilValue(todoListState); // 現在のTODOリストを取得
    2. statusFilterは型定義があると良いですね!'すべて' | '未着手' | '進行中' | '完了'を個別の型として定義するイメージです

        const [statusFilter, setStatusFilter] = useState("すべて"); // ステータスフィルターの状態管理

継続ポイント

  1. コメントが多く、改行が適切に行われているので大変見やすいです!
  2. try-catchが使われていて、エラーハンドリングを意識したコードがGoodです!
  3. ボタンの感触が分かるデザインと、todo1つ1つが際立って見えるデザインがナイスです!
  4. フィルター機能や検索機能はつまづく方が多いですが、バッチリですね!