そのエラーは,deleteTodo
の中でdeleteTodo
を呼び出しており,再帰が起きていることに起因するものです.再帰関数deleteTodo
の終了条件がないため無限に再帰呼び出しが行われ,RangeError: Maximum call stack size exceeded
というようなエラーが出てきます.関数呼び出し(call)にはstackを使うので,その最大サイズを超えた(exceeded)ということですね,再帰関数で実装するのは意図していなさそうなことから,再帰でなくするためにdeleteTodo
関数の宣言時か,もしくはdeleteTodo(todos[index]);
で書いた関数名のどちらかを変更することになると思います.
または
deleteを活用して要素を削除したい
という要件ですが下部にあるsplice
で十分そうです.deleteTodo
関数の処理を
const deleteTodo = (index) =>
todos.splice(index,1);
}
にすると良いのではないでしょうか.delete
を使うならdelete todos[index];
ですね.
ただ,JSのドキュメントでも言われている通り,delete
しても配列のサイズは元のサイズのままでindex
番目だけが空になりますので,どのみち消した分の要素を詰めるためにsplice
を使うことになりそうです.
Like!