【发布时间】:2017-06-14 06:29:08
【问题描述】:
我无法使用 map() 函数获取字符串数组并将其“转换”为 JSX,以便 JSX 可以在 ListView 中创建一行或一行。
renderRow: function(rowData) { //rowData is an Array
return rowData.map((data) => {
// now data is a single element of my array
return <View><Text> <Emoji size={40} name={data} /></Text></View>
// also tried ( ) around the above for the return
});
},
render: function() {
return (
<ListView contentContainerStyle={styles.list}
enableEmptySections={true}
initialListSize={500}
pageSize={20}
dataSource={this.state.dataSource}
renderRow={(rowData) => this.renderRow(rowData)}
/>
)
}
我得到的错误如下:
StaticRenderer.render():必须是有效的 React 元素(或 null) 回来。您可能返回了未定义、数组或其他一些 无效的对象。
因此,我知道这与地图中正在发生的事情有关,并且由于某种原因,在 renderRow() 函数中没有正确构造 JSX。返回一些没有地图的基本 JSX 工作正常。但我需要能够为我的数组的所有元素做到这一点。
map() 是不是最好的方法?任何帮助将不胜感激。
【问题讨论】:
-
您看过文档吗?
renderRow函数的返回值应该是什么?我想它不应该是一个数组。所以这个问题与 JSX 或 React 没有任何关系。 -
@Felix 你是对的。我没有参考该函数的返回类型的文档。感谢您指出了这一点。不过,这对我或其他任何人都毫无帮助。
标签: javascript react-native ecmascript-6 mapping jsx