我在JavaScript中有一个对象数组,我想循环遍历这些对象并返回一些JSX,其中包含引导类,这样每一行中总是显示2列。
options: [
{
"letter":"A",
"text": "14 March 1879"
},
{
"letter":"B",
"text": "14 March 1897"
},
{
"letter":"C",
"text": "24 May 1879"
},
{
"letter":"D",
"text": "24 June 1879"
}
]
根据我对其他语言和模板引擎的经验,这非常简单:只需创建一个开头和结尾的div
标记,其中包含一个类行
,然后使用模板引擎,循环并渲染每个对象,直到循环的计数器为2
,您可以动态地结束该角色并开始一个新角色。
大概是这样的:
<div class="row">
for (var i in options) {
if(i%2 === 0) {
<!-- render object ... -->
</div><!-- then end this row -->
<div class="row"><!-- start new row -->
} else {
<!-- render object -->
}
}
</div>
我在map函数中尝试了这个方法,但它给出了一个语法错误,因为在条件传递的情况下返回的值不是有效的JSX。
谢谢你的帮助。
编辑:
最后,我想要实现的是:
如果对象数组包含2个对象,我应该能够动态显示它,如下所示:
<div class="row">
<div class="col-md-6">
<div class="option correct-option">
A <!-- that is, option.letter -->
</div>
</div>
<div class="col-md-6">
<div class="option wrong-option">
B <!-- that is, option.letter -->
</div>
</div>
</div>
如果数组包含3个对象,我想实现这一点:
<div class="row">
<div class="col-md-6">
<div class="option correct-option">
A <!-- that is, option.letter -->
</div>
</div>
<div class="col-md-6">
<div class="option wrong-option">
B <!-- that is, option.letter -->
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="option correct-option">
C <!-- that is, option.letter -->
</div>
</div>
</div>
HTML:
结果:
验证:用于:Array.length=0
代码:
const options = [
{
"letter":"A",
"text": "14 March 1879"
},
{
"letter":"B",
"text": "14 March 1897"
},
{
"letter":"C",
"text": "24 May 1879"
},
];
return (
<>
{
Array.from(Array(Math.round(options.length / 2)).keys()).map((number, index) => {
return (
<div className="row">
{
options.slice(index * 2, (index * 2) + 2).map(option=>{
return (
<div className="col-md-6">
<div className={`option ${option.true ? 'correct-option' : 'wrong-option'}`}>
{option.letter}-{option.text}
</div>
</div>
);
})
}
</div>
);
})
}
</>
);
您可以使用常规for循环递增i
,每个循环2次,并检查第二个选项是否设置为处理长度不均匀的数组:
实例
function App() {
const content = [];
for (let i = 0; i < options.length; i += 2) {
content.push(
<div class="row">
<div class="col-md-6">
<div class="option correct-option">{options[i].text}</div>
</div>
{options[i + 1] && (
<div class="col-md-6">
<div class="option correct-option">{options[i + 1].text}</div>
</div>
)}
</div>
);
}
return <div>{content}</div>;
}
像这样的怎么样?
{options.map((option, i) => (
i % 2 === 0 ? null : ( // skip every 2nd row
<div class="row">
A: {option}
B: {i < options.length ? options[i + 1] : null}
</div>
)
)}
如何使用JSX进行条件渲染? 例如,我这里有div,如果props的值为null,我想呈现文本“不知道”,否则如果props不等于null,则呈现props。 例如: 我试过了,但没有成功。知道我做错了什么吗? 提前感谢!
我正在尝试创建可以在本质上重用的表组件。根据从父组件通过道具传递给它的数据,它可以包含任意数量的列。 为了实现这一点,我创建了如下单独的函数来填充JSX元素。 :它将列名传递作为父字符串数组的道具。 :这将填充每行的body和TableRow。它将调用函数,该函数将返回要推入方法中的JSX元素数组。 :此方法使用中迭代行对象的每个属性,创建TableCell元素,并将其推送到数组中,返回理想情况下
我目前正在阅读React官方网站,在那里我遇到了这个问题。React官方网站声明我们可以在JSX中使用函数代码。因此,我尝试了以下代码,但不起作用。 ABCD类扩展了React。组件{ } 我知道,我知道,你们中的一些人可能会说,看看React网站上给出的例子。我看到了,官网上的例子涉及到外部功能。我只是想知道我们能否独立使用JSX内部的函数。 有关更多信息,请参阅此链接:https://reac
我在react native 0.62上工作,我在其中使用了抽屉导航器。当用户登录到应用程序时,我将auth api响应存储到redux存储中。登录后,我想在仪表板头显示登录的用户名,但我无法使用redux存储在我的函数。用钩子试过,但不起作用。任何帮助或建议。提前谢谢你。下面是我的代码: login.reducer.js从'../utility/constants'导入{AUTH_REQUEST
问题内容: 我是React JS的新手,问题是我需要在这段代码中显示数据库中的所有字段。我已经能够在浏览器控制台中将所有数据作为对象获取,并且能够在浏览器中查看数组中的最后一条数据,但无法查看它们。请原谅我代码中的格式错误,这是我的新知识。在此先感谢..... 输出和代码 浏览器视图:Lands of Toys Inc.是名称131是ID JSON数据: 这些数据是通过以插件形式编写的PHP代码获
我有一个非常简单的功能组件,它从localStorage获取日期并显示它。我有两个按钮来添加或删除日期后的周数,我希望显示新的日期。但是,该组件不会被渲染。 此组件的预期行为是获取时间戳,然后显示该时间戳的月份和年份。加载时,它正确地显示了2021年1月,但是当我在onLefthtml上单击几次时,它并没有呈现组件,尽管我期望它显示2021年12月。计算是正确的,我想我在这里丢失了功能组件渲染的概