E
E
Evgeniy V.2019-11-23 17:48:54
React
Evgeniy V., 2019-11-23 17:48:54

Why does "Cannot read property 'removeToDo' of undefined" error occur?

App

import React, { context } from "react";
import ToDoList from "./Components/ToDo/ToDoList";
import ToggleToDo, { RemoveToDo } from "./context";

function App() {
  const [todos, setTodos] = React.useState([
    { id: 0, completed: true, title: "To Do List на React" },
    { id: 1, completed: false, title: "Портфолио на React" }
  ]);

  function toggleToDo(id) {
    setTodos(
      todos.map(todo => {
        if (todo.id === id) {
          todo.completed = !todo.completed;
        }
        return todo;
      })
    );
  }

  function removeToDo(id) {
    setTodos(todos.filter(todo => todo.id !== id));
  }

  return (
    <ToggleToDo.Provider value={{ toggleToDo }}>
      <RemoveToDo.Provider valuse={{ removeToDo }}>
        <div className="todo">
          <h1 className="todo__title">Today:</h1>
          <ToDoList todos={todos} />
        </div>
      </RemoveToDo.Provider>
    </ToggleToDo.Provider>
  );
}

export default App;

ToDoItem
import React, { useContext } from "react";
import PropTypes from "prop-types";
import ToggleToDo, { RemoveToDo } from "../../context";

function ToDoItem({ todo, index }) {
  const { toggleToDo } = useContext(ToggleToDo);
  const { removeToDo } = useContext(RemoveToDo);

  const classes = ["todo__item"];

  if (todo.completed) {
    classes.push("todo__item--checked");
  }

  return (
    <li className={classes.join(" ")}>
      <input
        type="checkbox"
        checked={todo.completed}
        onChange={toggleToDo.bind(null, todo.id)}
      />
      <strong>{index + 1}</strong>
      {todo.title}
      <button onClick={removeToDo.bind(null, todo.id)}>&times;</button>
    </li>
  );
}

ToDoItem.propTypes = {
  todo: PropTypes.object,
  index: PropTypes.number,
  onChange: PropTypes.func.isRequired
};

export default ToDoItem;

Answer the question

In order to leave comments, you need to log in

1 answer(s)
J
JorJeG, 2019-11-23
@JorJeG

Is that how it should be?
5dd947d4458a3940252549.png

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question