我有一个要显示字符串数组的组件。代码看起来像这样。
React.createClass({
render() {
<div>
this.props.data.map(t => <span>t</span>)
</div>
}
})
运行正常。例如,如果 props.data = [‘tom’,’jason’,’chris’] 页面中呈现的结果将为 tomjasonchris
然后,我想使用逗号连接所有名称,因此我将代码更改为
this.props.data.map(t => <span>t</span>).join(', ')
但是,渲染的结果是 [Object],[Object],[Object]。
我不知道如何解释对象成为要渲染的反应组件。有什么建议吗?
一个简单的解决方案是不使用reduce()
第二个参数且不传播先前的结果:
class List extends React.Component {
render() {
<div>
{this.props.data
.map(t => <span>{t}</span>)
.reduce((prev, curr) => [prev, ', ', curr])}
</div>
}
}
如果没有第二个参数,reduce()
它将从索引1而不是0开始,并且React非常满意嵌套数组。
如评论中所述,您只想将此数组用于至少包含一项的数组,因为reduce()
没有第二个参数将抛出一个空数组。通常,这应该不成问题,因为无论如何,您都想显示一条自定义消息,对空数组说类似“
this is empty”。
打字稿更新
您可以在Typescript中使用此参数(不带type-unsafe any
),其React.ReactNode
类型参数为.map()
:
class List extends React.Component {
render() {
<div>
{this.props.data
.map<React.ReactNode>(t => <span>{t}</span>)
.reduce((prev, curr) => [prev, ', ', curr])}
</div>
}
}
嗨,我是新来的反应本机和尝试渲染组件调用一个函数内渲染,但它似乎不工作。 我的职能: 如果我这样做,效果会更好: 但不是这个: 我不明白为什么第二个代码不起作用
问题内容: 我有一个组件,该组件获取作为道具的项目集合,并将其作为呈现为父组件子项的组件集合。我们使用以字节数组形式存储的图像。在函数中,我从项目中获取图像ID,并异步调用,以获取图像的字节数组。我的问题是我不能将诺言传播到React中,因为它不是设计来处理渲染中的诺言的(无论如何我还是不能说的)。我来自背景,所以我猜我在寻找类似关键字的内容来重新同步分支代码。 该函数看起来像这样(简化): 该方
问题内容: 我建立了一个复合组件,看起来像这样: 组件正确显示当前标签。 现在,当执行该动作时,什么也不会发生。但是,当我将Postfix添加到组件中的ID时,它可以正常工作(请参见下文)。 并使用后缀在render中定义ID: 有人可以向我解释为什么仅当我在ID中添加后缀时才起作用吗? 问题答案: 这个问题实际上有两个方面。 第一个问题是,实际上指定复合部件的ID 本身 的。默认情况下,HTML
我想渲染一个。但是,当我尝试使用Apache时,它将页面呈现为文本而不是html。 在vhost配置中,如果我尝试呈现索引。php,它可以正确执行。但是当我将DirectoryIndex更改为index时。phtml并尝试呈现索引。phtml存在于公共目录中,它只是呈现文本。 vhost配置为:ServerName parminder。com DocumentRoot“C:/workspace/p
问题内容: 我正在遵循此教程:http : //reactkungfu.com/2015/07/approaches-to-testing- react-components-an-overview/ 尝试学习“浅渲染”的工作原理。 我有一个更高阶的组件: 和一个组件: 和一个测试: 该变量保存 在本教程中,测试如下: 就我而言,如果我登录,它是: 所以我像这样更改了测试: 现在它给了我这个错误:
问题内容: 我有一个功能组件,我想强迫它重新渲染。 我该怎么办? 由于没有实例,因此我无法致电。 问题答案: 现在,使用react挂钩,您可以调用函数组件。 将返回由2个元素组成的数组: 1.一个值,表示当前状态。 2.它的二传手。用它来更新值。 通过设置器更新值将迫使您的功能组件重新呈现 , 就像这样做: 您可以在此处找到演示。 上面的组件使用了自定义的钩子函数(),该函数使用了布尔状态钩子()