Я создал простой метод класса handleChange
с параметром id
для класса App
.
Я попытался вызвать этот метод handleChange
из дочернего компонента функции с именем TodoItem
.
Когда я нажал на флажок, браузер вернул TypeError
, сказав, что props.handleChange(props.item.id) is not a function
, как показано на рисунках:
![props.handleChange is not a function](https://i.stack.imgur.com/OFuDG.png)
Может кто-нибудь объяснить, что не так с моими кодами в TodoItem
?
App
компонент класса:
import React, { Component } from "react";
import TodoItem from "./TodoItem";
import todosData from "./todosData";
class App extends Component {
constructor() {
super();
this.state = {
todos: todosData,
};
this.handleChange = this.handleChange(this);
}
handleChange(id) {
console.log("changed", id);
}
render() {
const todoItems = this.state.todos.map((item) => (
<TodoItem key={item.id} item={item} handleChange={this.handleChange} />
));
return <div className="todo-list">{todoItems}</div>;
}
}
export default App;
TodoItem
функциональный компонент:
import React from "react";
function TodoItem(props) {
return (
<div className="todo-item">
<input
type="checkbox"
checked={props.item.completed}
onChange={(e) => props.handleChange(props.item.id)}
/>
<p>{props.item.text}</p>
</div>
);
}
export default TodoItem;