作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有看起来像这样的模拟数据对象:
topicGroups: {
0: {
title: "Languages",
topics: {
0: {
title: "Javascript",
description: "Everything about Vanilla JS",
latestTopic:
"Diskussion] Der ideale asdf Gaming-PC er ideale asdf Gamin(1..."
},
1: {
title: "C#",
description: "Microsoft's go to language",
latestTopic: "Main geiles Topic alter"
}
}
},
1: {
title: "Coding Partner Search",
topics: {
0: {
title: "Suche nach Liebe",
description: "Everything about Vanilla JS",
latestTopic:
"Diskussion] Der ideale asdf Gaming-PC er ideale asdf Gamin(1..."
}
}
}
}
我想实现以下目标:
title
字符串和 topics
对象。topics
对象(因此我位于群组标题的范围内)title
和 description
我尝试了几个 lodash 函数,但无法使其工作。我得到的最接近的是除了 topicGroups
之外创建另一个新对象,但是很难弄清楚哪些主题引用了哪些 topicGroups。
示例我想如何使用 jsx 以及我想返回什么:
return groups.map(group =>
group.topics.map(topic => {
return (
<ForumTopicGroup title={group.title}>
<ForumTopic>{topic.title}</ForumTopic>
</ForumTopicGroup>
);
})
);
实现这一目标的最佳且最干净的方法是什么?
我之所以只使用对象而不是使用数组来处理数据,是因为我想像使用来自 firebase 的数据一样处理这些数据(因为我稍后将在应用程序中使用 firebase
最佳答案
如果您可以使用数组,它会像您在问题中编写的那样工作,但由于对象没有 map
方法,因此您可以使用 Object.entries
而不是迭代对象中的所有键值对。
示例
const groups = {
0: {
title: "Languages",
topics: {
0: {
title: "Javascript",
description: "Everything about Vanilla JS",
latestTopic:
"Diskussion] Der ideale asdf Gaming-PC er ideale asdf Gamin(1..."
},
1: {
title: "C#",
description: "Microsoft's go to language",
latestTopic: "Main geiles Topic alter"
}
}
},
1: {
title: "Coding Partner Search",
topics: {
0: {
title: "Suche nach Liebe",
description: "Everything about Vanilla JS",
latestTopic:
"Diskussion] Der ideale asdf Gaming-PC er ideale asdf Gamin(1..."
}
}
}
};
function App() {
return (
<div>
{Object.entries(groups).map(([groupKey, group]) => (
<div key={groupKey}>
{Object.entries(group.topics).map(([topicKey, topic]) => {
return (
<div key={topicKey}>
{group.title} - {topic.title}
</div>
);
})}
</div>
))}
</div>
);
}
ReactDOM.render(<App />, document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>
关于javascript - 如何映射包含另一个我想要映射的对象并从中返回 JSX 的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53317981/
使用登录后,我想吐出用户名。 但是,当我尝试单击登录按钮时, 它给了我力量。 我看着logcat,但是什么也没显示。 这种编码是在说。 它将根据我在登录屏幕中输入的名称来烘烤用户名。 不会有任何密码。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我是一名优秀的程序员,十分优秀!