javascript - React TypeError:“x”不是函数
问题描述
我在子组件中从父级调用了一个函数 setTodos,但这会返回以下错误:
setTodos 不是函数
你能解释一下为什么会这样吗,非常感谢。这是我的代码:
import React, { useState } from 'react';
import './App.css';
import Form from './components/Form';
import TodoList from './components/TodoList';
function App() {
const [inputText, setInputText] = useState("");
const [todos, setTodos] = useState([]);
return (
<div className="App">
<header>
<h1>Phuc's Todo list</h1>
</header>
<Form inputText={inputText} todos={todos} setTodos={setTodos}/>
<TodoList/>
</div>
);
}
export default App;
import React from 'react';
const Form = ({inputText, setInputText, todos, setToDos}) => {
const inputTextHandler = (e) => {
setInputText(e.target.value);
}
const submitTodoHandler = (e) => {
e.preventDefault();
setToDos([
...todos,
{text: inputText, completed: false, id: Math.randowm()*1000}
])
}
return (
...
)
}
解决方案
setTodos
调用in时,您的代码中有错字child component
它应该setTodos
在 child 而不是setToDos
. 你有大写的D,应该是小写的d。
由于 Javascript 是区分大小写的语言。所以你必须使用确切的术语。
setTodos([//here your code]);
推荐阅读
- javascript - 如何在实现分页时知道 Firestore 查询将返回多少项
- java - 记录哪个 Spring AOP
- html - 如何创建一个简单的应用程序/页面以单击另一个页面上的按钮
- javascript - 将道具连接到 Object.assign
- javascript - 正则表达式从文件名中排除某个单词
- graphdb - GraphDB Workbench 无法启动
- shell - 在 sed 中执行命令,同时保留行的不匹配部分
- azure - 以登录 AAD 用户的身份运行 Azure SQL 存储过程
- json - JQ选择值包含字符串且值不为空的对象
- python-3.x - 设置器中的装饰器或断言来检查属性类型?