Conversation
| setTodos(todos.map(todo => | ||
| ({ ...todo, isEdit: todo.id === id }) | ||
| )); |
There was a problem hiding this comment.
今回の状況では特に問題になりませんが、todosはuseStateのセッター(setTodos)による再レンダリング後でないとセッターによる更新後のtodosの値にアクセスできないため、セッターのコールバック関数から値を参照するようにするのが定番です(ハッカソンでは動けばOKです!)。
このあたり以下の記事が参考になると思います。
https://zenn.dev/takuty/articles/c032310a6643ac
以下のようになるかなと思います。
setTodos((previousTodos) => {
return previousTodos.map((todo) => ({...todo, isEdit: todo.id === id}));
});| /> | ||
| ) : ( | ||
| <> | ||
| <span onClick={() => toggleEdit(todo.id)}>{todo.name}</span> |
There was a problem hiding this comment.
アクセシビリティ的には span にonClickをつけるのはアンチパターンです。今回の課題ではデザイン的にどうしてもTODOの文字にonClickをつけなくてはいけないのでOKです。
本来はデザインとして編集ボタンを付けて、そこにonClickをつけるべきでした 🙏
| ) : ( | ||
| <> | ||
| <span onClick={() => toggleEdit(todo.id)}>{todo.name}</span> | ||
| <button |
There was a problem hiding this comment.
細かいですがButtonにはtype="button"属性をつけるようにしてください。デフォルトだとtype="submit"になるので意図しないリクエストが発生する可能性があります(ハッカソンでは動けば良いので気にしなくてOKです)。
https://developer.mozilla.org/ja/docs/Web/HTML/Element/button#type
| box-shadow: 0 0 0 1px rgb(58, 117, 194); | ||
| } | ||
|
|
||
| .input .add-button { |
There was a problem hiding this comment.
最近だとCSS Nestingが使えるようになったので、これを使うともう少し簡潔に書けるかなと思います(修正の必要はないです)。
|
バックエンドの方は特に問題ないです! |
フロントエンド
フロントエンド課題 「TODOリストを作ろう」に書かれているステップを全て実装
動作
2025-02-25_15h40_51.mp4
バックエンド
todosテーブル一覧Failedとなってしまいます)