gpt4 book ai didi

javascript - 如何在 React 中将 JSON 数据显示为表格

转载 作者:行者123 更新时间:2023-12-02 19:41:03 25 4
gpt4 key购买 nike

我正在使用一个 API,它返回各种不同键值对的 JSON。我试图将它们显示在 render() 内作为一个由 2 列(键和值)组成的表,其中分别包含对象键和值。

  1. fetchBasicDetails() 中的 API是 POST,它采用默认的 this.state 值作为输入并返回 JSON 输出。
  2. 然后使用 setState 将 JSON 输出对象存储到 this.state 的 birth_details 属性中方法。
  3. 然后,我尝试显示<table>中的对象数据。标签使用 forEach和 Object.keys,它什么也没显示。

感谢任何帮助。谢谢。

export default class HoroscopeReport extends React.Component {
constructor(props) {
super(props);

this.state = {
day: 11,
month: 2,
year: 2019,
hours: 12,
minutes: 59,
tzone: 5.5,
lat: 19.22,
lon: 25.2,
birth_details:{}
};
}

handleSubmit = event => {
event.preventDefault();
//console.log("Received user submitted data"+JSON.stringify(this.state))
this.fetchBasicDetails();
};

fetchBasicDetails() {
let myHeaders = new Headers();
myHeaders.append("Content-Type", "application/x-www-form-urlencoded");
myHeaders.append("Authorization", "Basic XXXXXXXXXXXXXXX");

let urlencoded = new URLSearchParams();
urlencoded.append("day", this.state.day);
urlencoded.append("month", this.state.month);
urlencoded.append("year", this.state.year);
urlencoded.append("hour", this.state.hours);
urlencoded.append("min", this.state.minutes);
urlencoded.append("lat", this.state.lat);
urlencoded.append("lon", this.state.lon);
urlencoded.append("tzone", this.state.tzone);

let requestOptions = {
method: 'POST',
headers: myHeaders,
body: urlencoded,
redirect: 'follow'
};

fetch("https://json.astrologyapi.com/v1/birth_details", requestOptions)
.then(response => response.text())
.then(result => {
this.setState({ birth_details: result });
})
.catch(error => console.log('error', error));
}

render() {

return (
<div>
{/* FORM SUBMITTION CODE HERE */}
<h2>Output:-</h2>
<table border={2} cellPadding={5}>
<thead>
<tr>
<td>Key</td>
<td>Value</td>
</tr>
</thead>
<tbody>
Object.keys(this.birth_details).forEach(function (element) {
return <tr><td>element</td><td>this.birth_details[element]</td></tr>;
});
</tbody>
</table>
</div>
);
}
}

作为引用,这是 JSON 的输出:-

{"year":2019,"month":2,"day":11,"hour":12,"minute":59,"latitude":19.22,"longitude":25.2,"timezone":5.5,"gender":" ","name":" ","seconds":0,"ayanamsha":24.124044280610406,"sunrise":"10:19:50","sunset":"21:47:13"}

最佳答案

通常在 React 中渲染基于数组的元素是使用 map() 而不是 forEach() 来处理的。原因是使用 map() 您可以在迭代的同时操作每个元素,并为 render 方法返回完全适合的 JSX 语法。同时 forEach() 不返回任何内容,仅返回 undefined

我想你可以尝试以下方法:

render() {
return (
<div>
<h2>Output:-</h2>
<table border={2} cellPadding={5}>
<thead>
<tr>
<td>Key</td>
<td>Value</td>
</tr>
</thead>
<tbody>
{
this.state.birth_details &&
Object.keys(this.state.birth_details).map(function (element) {
return <tr>
<td>{element}</td>
<td>{this.state.birth_details[element]}</td>
</tr>;
});
}
</tbody>
</table>
</div>
);
}

希望对您有所帮助!

关于javascript - 如何在 React 中将 JSON 数据显示为表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60129432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com