Задать вопрос
volkovecgenei
@volkovecgenei
...

Почему возникает ошибка «Cannot read property 'removeToDo' of undefined»?

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;
  • Вопрос задан
  • 39 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@JorJeG
Так и должно быть?
5dd947d4458a3940252549.png
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы