javascript - 映射元素中的 JSX 映射元素,相邻的 JSX 元素必须包含在封闭标记中
问题描述
似乎无法找到解决方法来尝试在都被映射的 JSX 元素中包含 JSX 元素。我收到返回错误“必须将相邻的 JSX 元素包装在封闭标记中。你想要一个 JSX 片段 <>...</> 吗?
我知道返回函数需要将一个元素作为一个整体返回,我相信我正在使用最顶层的 div。外部映射是映射一个字符串数组,内部映射是映射一个已经导入的 web pack。我正在从我的 redux 状态中提取字符串的外部映射,并且我已经验证它可以正常工作并且 web pack 也正确映射,我只是无法将它们映射在一起。在我的脑海中,我只是将其视为基本上是一个外循环,然后是一个内循环。我会接受任何建议。
我猜这个问题有一个简单的答案,只是无法弄清楚。
这是我的功能组件:
function UserLesson() {
const classes = useStyles();
const selectLessons = useSelector(state => state.redu.userLessons)
return (
<div className={classes.root}>
{selectLessons.map((title) => (
<h2>{title}</h2>
<GridList className={classes.gridList} cols={2.5}>
{searchResources.result.map((resource) => (
<GridListTile key={resource.media}>
<img src={resource.media} alt={resource.title} />
<GridListTileBar
title={resource.title}
classes={{
root: classes.titleBar,
title: classes.title,
}}
actionIcon={
<IconButton aria-label={`star ${resource.title}`}>
<StarBorderIcon className={classes.title} />
</IconButton>
}
/>
</GridListTile>
))}
</GridList>
))}
</div>
);
}
解决方案
要返回多个元素,您需要将它们包装在父元素中。以下是几种方法:
通过添加额外的父元素:
return (
<div>
<Child/>
<Child/>
</div>
)
不添加任何额外的父元素:
return (
<React.Fragment>
<Child/>
<Child/>
</React.Fragment>
)
或使用 Fragment 的简写:
return (
<>
<Child/>
<Child/>
</>
)
因此,您可以这样做来解决您的问题:
{selectLessons.map((title) => (
<React.Fragment key={some key here}>
<h2>{title}</h2>
<GridList className={clas....
....
</React.Fragment>
...
推荐阅读
- apache - 如何在 .htaccess 中使用自定义逻辑重定向 url?
- python - 使用正则表达式查找包含重复单词的句子
- html - 当我直接点击时,HTML 无法加载 CSS,但是当我使用 VSCode 上线时,它加载得很好
- python - 如何仅从 DateTime 对象中检索时间但保留数据类型
- android - 有没有办法以编程方式将文件从 Android 应用程序上传到 Google Drive?
- python - 我如何显示可视化的价值
- python - 将熊猫数据框列值从字符串转换为浮点数
- javascript - Angular 中的用户 JsonWebToken -> 方法发布
- java - 未知方言支持 REF_CURSOR 参数
- ios - 如何在 iOS 设备和 Mac OS 设备的 safari 浏览器中录制音频和视频?