我正在尝试将jQuery组件转换为React.js,而我遇到的困难之一是基于for循环渲染n个元素。
我了解这是不可能的,也不建议这样做,并且在模型中存在数组的地方使用它完全有意义map
。很好,但是当您没有数组时该怎么办?取而代之的是,您拥有一个等于要渲染的给定元素数量的数值,那么您应该怎么做?
这是我的示例,我想根据元素的层次结构级别为元素添加任意数量的span标签。因此,在第3级,我要在text元素之前添加3个span标签。
在javascript中:
for (var i = 0; i < level; i++) {
$el.append('<span class="indent"></span>');
}
$el.append('Some text value');
我似乎无法得到这个,或者与JSX React.js组件中的工作类似的东西。相反,我必须执行以下操作,首先将临时数组构建为正确的长度,然后循环该数组。
React.js
render: function() {
var tmp = [];
for (var i = 0; i < this.props.level; i++) {
tmp.push(i);
}
var indents = tmp.map(function (i) {
return (
<span className='indent'></span>
);
});
return (
...
{indents}
"Some text value"
...
);
}
当然,这不是最好的方法还是唯一的方法?我想念什么?
更新:从React > 0.16开始
渲染方法不一定必须返回单个元素。也可以返回一个数组。
var indents = [];
for (var i = 0; i < this.props.level; i++) {
indents.push(<span className='indent' key={i}></span>);
}
return indents;
要么
return this.props.level.map((item, index) => (
<span className="indent" key={index}>
{index}
</span>
));
此处的文档介绍了有关JSX子级的信息
旧:
您可以改用一个循环
var indents = [];
for (var i = 0; i < this.props.level; i++) {
indents.push(<span className='indent' key={i}></span>);
}
return (
<div>
{indents}
"Some text value"
</div>
);
您还可以使用 .map 和fancy es6
return (
<div>
{this.props.level.map((item, index) => (
<span className='indent' key={index} />
))}
"Some text value"
</div>
);
同样,您必须将返回值包装在容器中。我在上面的示例中使用了div
正如文档在这里说的
当前,在组件的渲染中,您只能返回一个节点。如果您有要返回的div列表,则必须将组件包装在div,span或任何其他组件中。
我正在尝试将jQuery组件转换为React.js,其中一个困难是基于for循环呈现n个元素。 我明白这是不可能的,或者推荐的,并且在模型中存在数组的地方,使用是完全有意义的。那很好,但是当你没有数组的时候呢?取而代之的是,你有一个数值,它等于要渲染的给定数量的元素,那么你应该怎么做? 下面是我的示例,我想根据元素的层次结构,为元素添加任意数量的span标记作为前缀。所以在第3级,我希望在文本元素
问题内容: 我想解组一个包含数据集合的xml文件,像这样 我们知道这可以通过两个类完成:人员,使用Castor的人员,JAXB或其他框架。 但是,如果不编写收集类的Persons怎么办? 问题答案: 寻找一种方法来告诉Castor您希望它生成一个Person实例。 http://www.castor.org/how-to-map-a-list-at- root.html
所以,我想做的是: 创建水果的对象作为键和它们出现的次数。结束对象如下所示: 所以对于“苹果”来说: 我回顾了一堆帖子和链接,这些帖子和链接让我陷入了一个兔子洞。即便如此,他们中没有一个明确地解决了我所能说出的问题。 这段代码中Number对象保存属性并增加数字时发生了什么? 如何增加JavaScript对象中的值? 如何在JavaScript中使用for…语法获得循环计数器/索引? 遍历对象数组
问题内容: 我有一个Flask应用程序,当从flask调用它时,调用时不会出现问题。 我需要相同的方法在flask外部工作 我可以使用,但是我想在两种情况下(flask and command line)都可以使用相同的方法 问题答案: 你需要在应用程序上下文中呈现它。将应用程序导入后端代码,然后执行以下操作。
通常对象映射器用于将较大的数据集映射到较小的数据集的场景(例如:对象有很多数据,但我们只想返回其中的几个)。 对象映射器通常创建一个小集合的目标对象的新实例,并从具有较大集合的源对象中设置所需字段,但我有相反的场景:我有一个已经包含一些数据的目标对象,现在我需要将具有较小数据集的新源对象映射到目标对象。 源类 目的地类别 DesObj已经包含int i和float f的值,SrcObj有Strin
问题内容: 你能告诉我如何在react js中渲染列表吗?我喜欢这样 问题答案: 您可以通过两种方式进行操作: 第一: 第二: 直接在返回中编写map函数