【发布时间】:2020-12-25 21:25:39
【问题描述】:
我正在处理一个小项目,并且正在将功能组件转换为基于类的组件,以便我的组件可以管理其状态。在翻译组件时,我遇到了一个错误:
TypeError:Cannot read property 'id' of undefined
此组件用作功能组件,因此我不确定为什么我现在收到此错误。谁能回答为什么在从功能组件转换为基于类的组件时我收到此错误?这与范围有关吗?我只是有一些语法错误吗?我一直在努力解决这个问题,只是不明白为什么它无法读取现在在我的组件渲染部分返回中的“id”属性。
组件代码:
import React, {Component} from "react";
import "./OpenTasksComponent.css"
class openTasks extends Component{
constructor(){
super();
this.handleClick = this.handleClick.bind(this);
}
handleClick(){
let x = document.body.nodeName;
console.log(x);
}
render(){
return (
<div className="tasks" value = {this.task.id}>
<h1 onClick={this.handleClick}>{this.task.clientName}</h1>
<div className="accordion-item accordion-item-open">
<h2>{this.task.matter}</h2>
<p>{this.task.matterStatus}</p>
</div>
</div>
)
}
}
export default openTasks
应用代码:
import './App.css';
import Task from './components/open-tasks-component/open-tasks-component';
import tasksData from './components/open-tasks-component/tasks-data';
import Header from './Header';
function App() {
const Tasks = tasksData.map(task=> <Task key={task.id} task ={task}/>)
return (
<div className="App">
<Header />
{Tasks}
</div>
);
}
export default App;
【问题讨论】:
-
你要使用
this.props.task -
在你的功能组件中使用 useState 钩子? reactjs.org/docs/hooks-state.html
-
@Will 我还不知道如何使用钩子。仍在学习 React 的基础知识,我正在研究基于类的组件,但我很欣赏这是解决为功能组件提供一种管理状态的方法的另一种方法。
标签: javascript reactjs