Реагирует на ошибку Todo App ‘TypeError: объект (…) не является функцией’

#javascript #reactjs #react-hooks

#javascript #reactjs #реагирует на запросы

Вопрос:

Я разрабатываю приложение Todo с помощью перехватов React. Я получаю ошибку «TypeError: объект (…) не является функцией» при определении функционального компонента.

Версия React: 16.7.0

Вот ошибка:

   1 | import React, { useState } from "react"
  2 | import "./App.css"
  3 | 
> 4 | export default function TodoApp() {
  5 |   const [todo, setTodo] = useState("")
  6 |   const [todos, setTodos] = useState([])
  7 | 
  

И мой код:

 import React, { useState } from "react"
import "./App.css"

export default function TodoApp() {
  const [todo, setTodo] = useState("")
  const [todos, setTodos] = useState([])

  const handleChange = (e) => {
    setTodo(e.target.value)
  }

  const addTodo = () => {
    setTodos([
      ...todos,
      {
        id: todos.length   1,
        title: todo,
        isDone: false
      }
    ])
  }

  continued...
  

Комментарии:

1. Перехваты не были введены до реакции 16.8 . Если вы действительно используете 16.7, это может быть проблемой.

2. да, решено, большое вам спасибо!

Ответ №1:

Похоже, у вас ошибка внутри addTodo функции. Если ваше текущее состояние зависит от предыдущего состояния, вам нужно вместо этого передать функцию setTodos , чтобы избежать ошибок. Попробуйте это:

 const addTodo = () => {
    setTodos(prevTodos => [
      ...prevTodos,
      {
        id: prevTodos.length   1,
        title: todo,
        isDone: false
      }
    ])
  }
  

Комментарии:

1. Спасибо за ответ, приятель. Версия React устарела. Проблема была решена, когда я ее обновил.