reactjs - 如何从两个不同的 API 中获取 Object Json 类型中的两个值?
问题描述
我需要从两个不同的 JSON API 传递两个对象数据。
考虑下面的代码:
componentDidMount(){
const loginEmail = localStorage.getItem('loginEmail');
fetch(`http://localhost:9000/api/users/view/${loginEmail}`,) // first api
.then((resp)=>{
resp.json().then((res)=>{
this.setState({users_data: res.data});}
)
})
const id = localStorage.getItem('id');
fetch(`http://localhost:9000/api/event/view/${id}`,) // second api
.then((resp)=>{
resp.json().then((res)=>{
this.setState({
event_data: res.data,
});
})
})
}
我如何从 json api 调用对象值:
render() {
const users_data= this.state.users_data;
const event_data= this.state.event_data;
console.log(users_data) //I can get this two result on my console log
console.log(event_data)
return(
<div className="Container">
{
Object.keys(users_data, event_data).map((key) => // not sure is it the correct way?
<div className="po-left-column">
<h1>User Name: { users_data[key].name }</h1>
<h1>Event Name: { event_data[key].name }</h1>
</div>
)}
</div>
);
}
所以从上面的代码中,我可以在控制台日志中看到两个数据(users_data 和 event_data),但我无法在 UI 中显示数据?有什么我错了吗?
解决方案
您可以像这样使用“.map”。每当状态对象发生变化时,React DOM 都会自动更改输出。应该使用“key”attr 来检测这种变化。
return(
<div className="Container">
{
users_data.map((value, index) => {
return (
<h1 key={'users_data' + index}>User Name:{value.name}</h1>
)
})
}
{
event_data.map((value, index) => {
return (
<h1 key={'event_data' + index}>Event Name:{value.name}</h1>
)
})
}
</div>
);
推荐阅读
- firebase - Firebase 身份验证网络未登录
- sockets - 计算机网络中的套接字和端口有什么区别?
- mysql - 如何从 mysql 工作台连接到远程主机上的 mysql docker 容器?
- javascript - 使用javascript时文本在输入框右侧继续
- visual-studio-code - 如何禁用 VS Code 上的所有“新增功能”屏幕?
- javascript - 如何使项目可拖动和可点击?
- ruby-on-rails - 无法从获取请求中获取“Access-Control-Allow-Origin”标头
- r - 使用 dplyr 进行编程时出现问题 - 错误提示在管道的一部分中找不到对象但可以更早地工作
- java - 使用循环变量获取另一个变量
- javascript - 将 2020-10-18T21:00:00.000-03:00 转换为 2020-10-19T00:00