#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 устарела. Проблема была решена, когда я ее обновил.