ytanaka44 / react-todoapp

0 stars 0 forks source link

タスクに付与されたIDを直接URLで検索するとエラーになる #12

Closed ytanaka44 closed 8 months ago

ytanaka44 commented 8 months ago

背景

下図のようにタスクをクリックするとURL付きのダイアログが表示される。 image

このURLを直接検索すると下記エラーが発生

Cannot read properties of undefined (reading 'id')
TypeError: Cannot read properties of undefined (reading 'id')

原因

TodoEditコンポーネントで下記のようにTodoStateを無理やり当てはめているため、undefinedの可能性を考慮できていない

const todo = props.todos.find((todo) => todo.id === id) as TodoState;
ytanaka44 commented 8 months ago
ytanaka44 commented 8 months ago

変更点

const { id } = useParams<string>();
useEffect(() => {
  if (id) {
    setIsLoading(true);
    setError(null);
    const fetchTodo = async () => {
      try {
        const fetchedTodo = await getTodoById(id);
        setTodo(fetchedTodo);
      } catch (err: any) {
        setError(err.message);
      } finally {
        setIsLoading(false);
      }
    };
    fetchTodo();
  }
}, [id]);