类型错误:无法读取 null 的属性“list”
2019-08-12
896
以下是导致错误的代码:
import React, { Component } from 'react'
import Header from './components/Header';
import Todo from './components/Todo';
class App extends Component {
state: {
list: [
{
title: "Take out trash",
completed: false,
id: 1
},
{
title: "Take dog for walk",
completed: false,
id: 2
},
{
title: "Doctor appointment",
completed: false,
id: 3
}
];
}
render() {
return (
<div className="container">
<Header number={this.state.list.length} />
<Todo/>
</div>
)
}
}
export default App
当我将数组作为 prop 传递给 header 时,消息显示无法读取“this”。但我不能这样做吗?如果关键字“this”在类组件中,为什么它未定义?
3个回答
您错误地设置了初始状态。
应该是:
class App extends Component {
state = {
list: [
{
title: "Take out trash",
completed: false,
id: 1
},
{
title: "Take dog for walk",
completed: false,
id: 2
},
{
title: "Doctor appointment",
completed: false,
id: 3
}
];
}
或者,您可以在构造函数方法中设置它,但这将实现相同的效果
Jonathan Irwin
2019-08-12
它是
state = { }
而不是
state: { }。
ImInYourCode
2019-08-12
在您的帖子标题中,您提到“list”会引发错误,而不是“this”。根据您所指的问题,潜在问题会有所不同。我怀疑
this.state
未定义,因此
this.state.list
会引发错误,因此我的回答基于该假设,直到澄清为止。
我通常在
constructor
中声明初始状态,例如
import React, { Component } from 'react'
import Header from './components/Header';
import Todo from './components/Todo';
class App extends Component {
constructor(props) {
this.state = {
list: [
{
title: "Take out trash",
completed: false,
id: 1
},
{
title: "Take dog for walk",
completed: false,
id: 2
},
{
title: "Doctor appointment",
completed: false,
id: 3
}
]
}
}
render() {
return (
<div className="container">
<Header number={this.state.list.length} />
<Todo/>
</div>
)
}
}
export default App
我在自己的 React Native 应用中使用了您的状态声明,并得到了相同的错误。按照我上面所做的方式初始化状态应该可以解决它。
Benjamin Godlove
2019-08-12