javascript - 如何调用作为变量存储在不同组件中的 JSON 数据?
问题描述
我目前正在使用 axios 从我的 api 中绘制 JSON 数据,并且我正在映射这些数据并将其存储为变量。我希望能够在我的反应组件中调用这些变量,但我似乎无法找出最好的方法。
获取 JSON 数据并存储为变量
function ProfileOne(){
const [profiles, setProfiles] = useState([])
useEffect(() => {
axios.get("api/profiles/")
.then(res =>{
console.log(res)
setProfiles(res.data)
})
.catch(err => {
console.log(err)
})
}, [])
return (
profiles.map(profile => {
const { name } = profile;
})
<div>
<h2><b>{profile.name}</b></h2>
</div>
)
}
而且我希望能够在反应组件中调用 profile.major 之类的东西,但是我目前尝试这样做的方式不起作用。请让我知道执行此操作的正确方法。先感谢您。
解决方案
如果您要在组件之间传递数据,您可能必须重新构建应用程序或实现状态管理库,例如 redux。就个人而言,我会将您的 API 调用移动到父组件,然后将数据作为道具传递给子组件。父组件如下所示:
function ParentComponent() {
const [profiles, setProfiles] = useState([])
useEffect(() => {
axios.get("api/profiles/")
.then(res =>{
console.log(res)
setProfiles(res.data)
})
.catch(err => {
console.log(err)
})
}, [])
return (
<>
<ProfileOne profiles={profiles} />
<OtherComponent profiles={profiles} />
</>
);
}
在子组件中:
function ProfileOne(props){
return props.profiles.map(profile => (
<div>
<h2><b>{profile.name}</b></h2>
</div>
)
}
推荐阅读
- c# - If Condition inside SqlReader.Read() While 循环未执行
- asp.net - 带有借记卡号的贝宝显示无效的卡号
- php - Yii2 队列扩展:单个队列服务器的多个队列通道/管
- adonis.js - “E_INVALID_HASHER_DRIVER:哈希驱动程序 bcryptsu 不存在。> 更多详细信息:https://err.sh/adonisjs/errors/E_INVALID_HASHER_DRIVER”
- hibernate - 休眠@OneToMany DTO @Where 无效
- python - 无法在 Google AI 平台 (CMLE) 上安装 pycocotools
- javascript - React-materialize-css Modals 无法正常工作,因为它无法读取 M 的 Modal 类
- python - 在两个 Rdd 上使用联合后,无法将 Pyspark 作业结果保存到单个文本文件
- linux - Linux 内核 cfs_tasks
- python - python上的正则表达式将字符串吐入特定序列