我正在尝试在我的 React Native ListView 中实时列出我的 Firebase 数据库项目。但是,使用以下代码,当我在构造函数中初始化 dataSrouce 状态时,我收到一条错误消息,指出“未定义不是构造函数”。我应该怎么做才能让它工作?谢谢。
constructor(props) {
super(props);
this.state = {
dataSource: new ListView.DataSource({rowHasChanged: (row1, row2) => row1 !== row2})
};
this.itemsRef = this.props.firebaseApp.database().ref();
}
componentDidMount() {
this.listenForItems(this.itemsRef);
}
renderItem(item) {
return (
<TouchableHighlight>
<View>
<Text>{item.name}</Text>
</View>
</TouchableHighlight>
)
}
listenForItems(itemsRef) {
itemsRef.on('value', snap => {
var items = [];
snap.forEach((child) => {
items.push({
name: child.val().name,
description: child.val().description,
dateID: child.val().dateID,
schema: child.val().schema,
_key: child.key
});
});
this.setState({
dataSource: this.state.dataSource.cloneWithRows(items)
});
});
}
render() {
var TouchableElement = TouchableHighlight;
if (Platform.OS === 'android') {
TouchableElement = TouchableNativeFeedback;
}
return (
<View style={styles.container}>
<ListView
datasource={this.state.dataSource}
renderrow={this.renderItem.bind(this)} />
</View>
);
}