【发布时间】:2017-12-22 07:26:12
【问题描述】:
如何在渲染函数中获取对象数组的属性。如果我试试这个:
render() {
console.log(this.state.items[0].name);
(...)
我收到一个错误:
TypeError: this.state.items[0] 未定义
class App extends React.Component {
constructor() {
super()
this.state = {
items: []
}
}
componentWillMount() {
fetch('http://swapi.co/api/people/?format=json')
.then((response) => response.json())
.then(({ results: items }) => this.setState({ items }))
}
filter(e){
this.setState({ filter: e.target.value })
console.log(this.state.items[0].name);
}
render() {
console.log(this.state.items[0].name);
return (
<div>
<input type="text" onChange={this.filter.bind(this)} />
</div>
)
}
}
export default App
但是,如果我只注销数组的第一个元素
console.log(this.state.items[0])
它打印出对象
对象{名称:“卢克天行者”,身高:“172”,质量:“77”,头发颜色:“金发”,皮肤颜色:“公平”,眼睛颜色:“蓝色”,出生年份:“19BBY”,性别: “男”,家乡:“http://swapi.co/api/planets/1/”,电影:Array[5],还有 6 个……}
当过滤器函数被触发时,我确实得到了第一个元素的属性 console.log(this.state.items[0].name)
打印出来:
卢克·天行者
这里发生了什么?
【问题讨论】:
标签: javascript node.js reactjs