Oll*_*619 7 javascript ecmascript-6 reactjs fetch-api
我很新的反应,我试图从rails api引入数据,但我收到错误 TypeError: Cannot read property 'map' of undefined
如果我使用react dev工具,我可以看到状态,如果我在控制台中乱用它,我可以看到联系人$r.state.contacts可以帮助我做错了吗?我的组件看起来像这样:
import React from 'react';
import Contact from './Contact';
class ContactsList extends React.Component {
constructor(props) {
super(props)
this.state = {}
}
componentDidMount() {
return fetch('http://localhost:3000/contacts')
.then(response => response.json())
.then(response => {
this.setState({
contacts: response.contacts
})
})
.catch(error => {
console.error(error)
})
}
render(){
return(
<ul>
{this.state.contacts.map(contact => { return <Contact contact{contact} />})}
</ul>
)
}
}
export default ContactsList;
Run Code Online (Sandbox Code Playgroud)
May*_*kla 13
无法读取属性'map'的undefined,为什么?
由于this.state最初是{}和contacts的{}将不确定.重要的是,componentDidMount将在初始渲染后调用,并在首次渲染时抛出该错误.
可能的解决方案:
1-要么限定的初始值contacts如[]在状态:
constructor(props) {
super(props)
this.state = {
contacts: []
}
}
Run Code Online (Sandbox Code Playgroud)
2-或在使用前进行检查map:
{this.state.contacts && this.state.contacts.map(....)
Run Code Online (Sandbox Code Playgroud)
对于检查数组,您也可以使用Array.isArray(this.state.contacts).
注意:您需要为地图内的每个元素指定唯一键,检查DOC.
| 归档时间: |
|
| 查看次数: |
11286 次 |
| 最近记录: |