我正在尝试使用Firebase中的数据在我的react-native应用中填充Listview,目前我遇到此错误:
"对象无效作为React子对象(找到具有键{title}的对象)。如果您要渲染子集合,请使用数组,或使用React插件中的createFragment(object)包装对象。检查'文本的渲染方法。'"
这是在我调用clonewithrows时发生的。目前我对此功能的输入(在解析对Firebase的响应之后)是:[{title:'纽约' },{标题:'波士顿' }]
这是我的相关代码;如果您发现可能导致问题的任何问题,请告诉我。
const huntsRef = new Firebase(`${ config.FIREBASE_ROOT }/hunts`)
class Home extends Component {
constructor(props) {
super(props);
var conDataSource = new ListView.DataSource(
{rowHasChanged: (r1, r2) => r1.guid != r2.guid});
this.state = {
dataSource: conDataSource
};
}
listenForItems(huntsRef) {
huntsRef.on('value', (snap) => {
var hunts = [];
snap.forEach((child) => {
hunts.push({
title: child.val().title
});
});
this.setState({
dataSource: this.state.dataSource.cloneWithRows(hunts)
});
console.log('datasource' + this.state.dataSource);
});
}
componentDidMount() {
this.listenForItems(huntsRef);
}
renderRow(rowData, sectionID, rowID) {
console.log("ROWDATA" + rowData);
}
render() {
return (
<ListView
dataSource={this.state.dataSource}
renderRow={(rowData) => <Text>{rowData}</Text>}
/>
);
}
}
module.exports = Home;
答案 0 :(得分:1)
如消息所示,rowData是javascript对象,无法呈现。您可以将rowData字符串化。例如:
<ListView
dataSource={this.state.dataSource}
renderRow={(rowData) => <Text>{JSON.stringify(rowData)}</Text>}
/>