javascript - 在渲染方法中显示动态数据
问题描述
我需要创建一个通过从 API 填充数据而动态创建的卡片。我能够获取此数据,但无法在渲染方法中显示视图。请帮助我修复我的代码。
下面是我的类组件,我在其中使用 axios 获取表单数据,然后我遍历以获取键和值并将其分配给我要显示的卡。现在我似乎根本看不到卡片。
class Cards extends Component {
constructor(props) {
super(props);
this.state = { users: [] }
}
componentDidMount() {
let formData = new FormData();
const username = localStorage.getItem("username");
formData.append("username", username);
const config = {
headers: { "content-type": "multipart/form-data" },
};
axios
.post("http://", formData, config)
.then((response) => {
let rows = []
let count = 0
for (var i = 0; i < response.data.length; i++) {
console.log("data: "+response.data[i].key);
rows.push(<div className="col-md-4">
<div className="card">
<p>Data {count++}</p>
<h1>{response.data[i].key}</h1>
<p>{response.data[i].value}</p>
</div>
</div>
)
this.setState({ users: rows })
}
})
.catch((error) => {
console.log(error);
});
}
render() {
return (
<div className="cards">
{this.users}
</div>
);
}
}
export default Cards;
解决方案
将 HTML 标记添加到状态中不是一个好习惯。相反,将您的 API 响应添加到状态并使用render()
以正确的 HTML 标记呈现数据。
class Cards extends Component {
constructor(props) {
super(props);
this.state = {
response: {},
};
}
const apiCall = () => {
let formData = new FormData();
const username = localStorage.getItem("username");
formData.append("username", username);
const config = {
headers: { "content-type": "multipart/form-data" },
};
axios
.post("http://", formData, config)
.then((response) => {
this.setState({ response: response });
}).catch((error) => {
console.err(error);
});
}
componentDidMount() {
apiCall();
}
render() {
const { response } = this.state;
return (
<div className="cards">
{response.data.map((item, index) => {
<div key={`user-${index}`} className="col-md-4">
<div className="card">
<p>Data {index+1}</p>
<h1>{item.key}</h1>
<p>{item.value}</p>
</div>
</div>
})}
</div>
);
}
}
export default Cards;
推荐阅读
- bigdata - Is there a way to maximize RAM usage while importing data with CockroachDB?
- node.js - google calendar api - nodejs - Error PEM routines: get_name
- rust - 如果实现了 partialeq,则比较结构
- r - 在 R 中以特定顺序排列多面哑铃图上的 y-tick 值
- typescript - 在 Quasar 中使用 typescript
- python - 模块转换为 Apk 后是否可以在 Android 上运行?
- string - Haskell - 使用递归替换字符串中的子字符串(在我的情况下不允许使用函数 take 和 drop)
- npm-install - 我应该怎么做才能让命令 npm install 工作?
- python - Python 列条目选择
- python - 通过 gRPC 调用 TkInter 时崩溃