我的问题是关于如何在render return()中显示数组结果。
我提取了API,现在得到的结果存储在数组中。我需要显示此结果,但是我在返回中使用了for {},但是它不起作用,并且我还尝试了.map和map is undefined
。
fetch(url + '/couch-model/?limit=10&offset=0', {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'JWT ' + (JSON.parse(localStorage.getItem('token')).token)
}
}).then(res => {
if (res.ok) {
return res.json();
} else {
throw Error(res.statusText);
}
}).then(json => {
this.setState({
models: json.results
}, () => {
/*console.log('modelosJSON: ', json);*/
});
})
render() {
const { isLoaded } = this.state;
const modelsArray = this.state.models;
console.log('modelos: ', modelsArray);
if (!isLoaded) {
return (
<div>Loading...</div>
)
} else {
return (
<div>
/*show results here*/
</div>
)
}
}
答案 0 :(得分:3)
模型数组是从results
返回的json的fetch
,因此您可以在您的状态下将其设置为models
,并将isLoaded
设置为true
,因此在加载模型时隐藏加载指示器。
示例
class App extends React.Component {
state = { isLoaded: false, models: [] };
componentDidMount() {
fetch(url + "/couch-model/?limit=10&offset=0", {
method: "GET",
headers: {
"Content-Type": "application/json",
Accept: "application/json",
Authorization: "JWT " + JSON.parse(localStorage.getItem("token")).token
}
})
.then(res => {
if (res.ok) {
return res.json();
} else {
throw Error(res.statusText);
}
})
.then(json => {
this.setState({
models: json.results,
isLoaded: true
});
});
}
render() {
const { isLoaded, models } = this.state;
if (!isLoaded) {
return <div>Loading...</div>;
}
return <div>{models.map(model => <div key={model.id}>{model.code}</div>)}</div>;
}
}