Javascript 通过API返回的数组在子组件中重复映射子组件
我在映射组件时遇到问题。坦率地说,我没有足够的经验像上帝一样对代码做出反应。我会循序渐进地告诉你们我的问题,这样你们就能完全理解发生了什么 附件1.1 这是我的子组件,正如您所看到的,当我从API中提取数组时,我使用React-useState和useEffect挂钩来更新我的状态。没什么大不了的,没问题,只是普通的东西Javascript 通过API返回的数组在子组件中重复映射子组件,javascript,reactjs,axios,react-hooks,state,Javascript,Reactjs,Axios,React Hooks,State,我在映射组件时遇到问题。坦率地说,我没有足够的经验像上帝一样对代码做出反应。我会循序渐进地告诉你们我的问题,这样你们就能完全理解发生了什么 附件1.1 这是我的子组件,正如您所看到的,当我从API中提取数组时,我使用React-useState和useEffect挂钩来更新我的状态。没什么大不了的,没问题,只是普通的东西 function Financeticker() { const [crypto, setCrypto] = useState([]); const classes = us
function Financeticker() {
const [crypto, setCrypto] = useState([]);
const classes = useStyles();
useEffect(() => {
axios
.get(
`https://min-api.cryptocompare.com/data/top/totalvolfull?limit=10&tsym=USD&api_key=xxxxxxxxxxxxxxxxxxxx`
)
.then((resCrypto) => {
console.log(resCrypto.data.Data);
setCrypto(resCrypto.data.Data);
})
.catch((err) => {
console.log(err);
});
}, []);
附件1.2是一个函数,在我的孩子组件中作为子组件(胎儿组件,lol jk)发挥作用。如果它变得混乱,您可能会在附件1.3中理解,但基本上API的响应返回一个[10]对象的数组。现在,我希望子组件渲染10次(使用.map)并从API中提取每个属性(即{crypto.CoinInfo.FullName}
),问题是我得到一个错误,声明“无法读取未定义的属性”FullName
const cryptoTicker = crypto.map(() => (
<Grid item xs={12}>
<Card className={classes.root}>
<CardContent>
<Typography
className={classes.companyName}
color='textSecondary'
gutterBottom
>
{crypto.CoinInfo.FullName} <---- CANNOT READ PROPERTY "FULLNAME" OF UNDEFINED
</Typography>
</CardContent>
</Card>
</Grid>
));
我希望这个问题的结构足够好,可以得到答案。谢谢开发人员社区。好吧,您正在映射一个数组,但您从未指定该项。问题在第一行:
const cryptoTicker = crypto.map(() => (
将此更改为
const cryptoTicker = crypto.map((item) => (
然后您应该能够如下显示名称:
{item.CoinInfo.FullName}
完整代码:
const cryptoTicker = crypto.map((item) => (
<Grid item xs={12}>
<Card className={classes.root}>
<CardContent>
<Typography
className={classes.companyName}
color='textSecondary'
gutterBottom
>
{item.CoinInfo.FullName} <---- CANNOT READ PROPERTY "FULLNAME" OF UNDEFINED
</Typography>
</CardContent>
</Card>
</Grid>
));
const cryptoTicker=crypto.map((项目)=>(
{item.CoinInfo.FullName}哇,成功了。但是,我目前正在渲染10个组件。我有一个图像,它当前正在渲染10个子组件,每个子组件有一个子组件。我正在尝试渲染1个子组件和10个子组件。我的编程逻辑是否有任何缺陷?我不敢相信我没有看到.map参数是空的。该死。我终于解决了它。我没有直接调用cryptoTicker
。我基本上创建了另一个包含map函数的对象,它最初来自cryptoTicker
,cryptoTicker
将只包含网格组件,并将调用cryptoContent
,这是包含map函数的对象。实际上,
>将调用cryptoTicker
和cryptoTicker
将调用cryptoContent
不用说,以6小时为增量盯着代码库3天做得很好。>以6小时为增量盯着代码库3天做得很好lol是的,这就是编码的全部内容;-)至少在一开始,它会减少到2天,时间增量为4小时:-)哈哈哈。是的。我真的很热衷于编码。我真的很感谢stack overflow和支持开发人员社区对新手的帮助。再次感谢您回答我的问题。
const cryptoTicker = crypto.map((item) => (
<Grid item xs={12}>
<Card className={classes.root}>
<CardContent>
<Typography
className={classes.companyName}
color='textSecondary'
gutterBottom
>
{item.CoinInfo.FullName} <---- CANNOT READ PROPERTY "FULLNAME" OF UNDEFINED
</Typography>
</CardContent>
</Card>
</Grid>
));