React.js 无法读取未定义的属性“map”
2018-03-03
673
我正在尝试使用 fetch 进行 ajax 调用。数据库通过 mongo 运行,当使用来自 .json 文件的虚拟数据时,地图在 decks: [] 时正常工作,但会出现错误。
class Home extends Component {
constructor(props) {
super(props);
this.state = {
error: null,
isLoaded: false,
decks: []
};
}
componentDidMount() {
fetch("/api/getAllDecks")
.then(
(result) => {
this.setState({
isLoaded: true,
decks: result.decks
});
console.log("hiiii");
},
(error) => {
this.setState({
isLoaded: true,
error
});
console.log('hryyyy');
})
}
render() {
const decks = this.state.decks;
return (
<div className='container'>
{this.state.decks.map(decks => (
<MiniCard
word={decks.deckName}
/>
))};
</div>
);
};
}
2个回答
使用 Fetch API,您需要将响应转换为所需的数据类型才能使用它。要在此处执行此操作,请在从 fetch 调用返回的响应对象上调用
.json()
。
fetch('/api/getAllDecks')
.then(response => response.json())
.then(data => {
this.setState({ isLoaded: true, decks: data.decks })
})
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
此外,通过对
data.decks
执行
console.log
来仔细检查以确保其正确无误也无妨。
kingdaro
2018-03-03
短路
this.state.decks
{
this.state.decks &&
this.state.decks.map { decks => (<MiniCard word={decks.deckName} />))
};
danielbh
2018-03-03