我对React还是比较陌生,我正在尝试构建一个查询Chuck Norris API并返回一个随机笑话的简单应用。在浏览器中运行代码时,出现以下错误消息:
TypeError: jokes.map is not a function
我的理论是'map'期望一个数组-我的json数据对象不是-但是我不是肯定的,即使在这种情况下也不确定如何/如何调整我的代码。
这是我的代码:
这是App.js:
import React, {Component} from 'react';
import Norris from './components/norris';
class App extends Component {
render() {
return (
<Norris jokes={this.state.jokes} />
)
}
state = {
jokes: []
};
componentDidMount() {
fetch('https://api.chucknorris.io/jokes/random')
.then(res => res.json())
.then((data) => {
this.setState({ jokes: data})
})
.catch(console.log)
}
}
export default App;
这是norris.js:
import React from 'react'
const Norris = ({jokes}) => {
return (
<div>
<center><h1>Norris Jokes</h1></center>
{jokes.map((joke) => (
<div class="card">
<div class="card-body">
<h5 class="card-title">{joke.value}</h5>
</div>
</div>
))}
</div>
)
};
export default Norris
https://api.chucknorris.io/jokes/random的响应不是数组
如果您希望将笑话作为数组,则可以像下面这样更改代码:
componentDidMount() {
fetch('https://api.chucknorris.io/jokes/random')
.then(res => res.json())
.then((data) => {
this.setState({ jokes: [data]})
})
.catch(console.log)
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句