我是React的新手,所以我试图学习基本概念。
我通过API获取数据我将一些数据硬编码为学习目的,并提取了类似的提取请求:
componentDidMount() {
fetch("myserver.com/api/a/1")
.then(function(response) {
response.json()
})
}
在我的构造函数中,我将状态设置为数据:' false':
constructor(props) {
super(props)
this.state = {data: 'false'};
}
但是从这里开始,我输了。我在JSON对象中有三个不同的字符串我通过我的API,但我不知道如何访问它们。我已尝试在componentDidMount
中设置setState,但我收到了大量错误。
在这样的情况下你怎么办?我应该在哪里设置状态,以及如何通常访问/迭代JSON对象?
提前致谢!
答案 0 :(得分:2)
尝试这样的事情:
export default class YourComponent extends React.Component {
constructor(props) {
super(props);
this.state = {data: 'false'};
}
componentDidMount() {
this._getData();
}
_getData = () => {
fetch("myserver.com/api/a/1")
.then(response => {
if (response.ok) {
return response;
} else {
let errorMessage = `${response.status(${response.statusText})`,
error = new Error(errorMessage);
throw(error);
}
})
.then(response => response.json())
.then(json =>{
console.log(json);
this.setState({ data: json.data })
});
}
render() {
return (
<div>
{
this.state.data &&
this.state.data.map( (item, key) =>
<div key={key}>
{item}
</div>
)}
</div>
)
}
}
答案 1 :(得分:0)
正确的做法是调用JSON.parse()方法。
_getData = () => {
fetch("myserver.com/api/a/1")
.then(response => {
if (response.ok) {
return response;
} else {
let errorMessage =
`${response.status(${response.statusText})`,
error = new Error(errorMessage);
throw(error);
}
})
.then(response => response.json())
.then(json =>{
console.log(json);
this.setState({ data: JSON.parse(json) })
});
}