react-native - React native - 使用 MAP 进行迭代
问题描述
不知道出了什么问题,但我有这个 json ......
CONTENT = {
"pages": {
"p1": {
"backgroundImage": require("../assets/pageBkgs/p1.png"),
"backgroundColor": "#FF0000",
"elements": [
{
"jumpTo": {
"left": 500,
"top": 500,
"width": 100,
"height": 100,
"target": "p3"
},
"video" : {
"left": 200,
"top": 200,
"width": 100,
"height": 100,
"file": require("../assets/videos/limenice.mp4")
}
}
]
}
这应该相应地迭代返回:
<View style={styles.pageContainer}>
{
CONTENT.pages[pageKey].elements.map(element => {
const type = Object.keys(element).toString()
alert(Object.keys(element).toString())
switch (type) {
case "jumpTo":
return JumpTo(Object.values(element)[0], this.executeJumpTo.bind(this), CONTENT.designTime)
break
case "video":
return VideoPlayer(Object.values(element)[0], CONTENT.designTime)
break
default:
return null
}
})
}
</View>)
警报显示:“jumpTo,video”
我正在尝试归档类似...
for(let i=0; i < CONTENT.pages[pageKey].elements.length;i++) {
switch (Object.keys(CONTENT.pages[pageKey].elements[i]).toString()) {
case "jumpTo":
return JumpTo(Object.values(element)[0], this.executeJumpTo.bind(this), CONTENT.designTime)
break
case "video":
return VideoPlayer(Object.values(element)[0], CONTENT.designTime)
break
default:
return null
}
}
我期待 2 个警报的结果: jumpTo 和 video (而不是用逗号分隔)
有什么线索吗?我认为这是一个基本的函数式编程问题。
解决方案
要获得两个后续警报:
Object.keys(CONTENT.pages[pageKey].elements).each(type => alert(type));
返回两个后续组件[JumpTo, VideoPlayer]
:
{ Object.keys(CONTENT.pages[pageKey].elements).map(type => switch(type) {
/* your case statements */
}); }
推荐阅读
- node.js - 无法将数据从 node.js 存储到 mongoDB atlas 下面是代码片段
- oracle - 检查是否使用 FORCE 选项创建了视图
- laravel - 在 Laravel 项目中将 .doc 转换为 .pdf 的更好方法?
- sql - SQL 函数在上半月(1 到 15)和下半月(16 到 30/31)之间分割日期
- c - Eclipse:一些文件显示没有颜色样式
- python - 如何创建固定长度的数据帧
- reactjs - Electron js:右键单击未注册
- c# - 在 MySQL 中观察计数并在记录发生更改时显示通知的方法
- c# - .Net Core + Kubernetes > AuthenticationException:远程证书根据验证程序无效
- python - 敌人的 x 坐标不变(pygame)