我将在我的应用程序中使用RealmDB而不是AsyncStorage。对我来说更方便。但我在ListView组件中的渲染结果有问题。有两种方法可以在我的应用中获取数据: - 从api url获取:
return fetch('myurl')
.then((response) => response.json())
.then((responseJson) => {
let ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
this.setState({
dataSource: ds.cloneWithRows(responseJson),
}
})
.catch((error) => {
console.error(error);
});
- 从realmdb获取离线模式的数据。
RealmDB非常完美。从查询中编写和获取数据很容易。我可以在控制台中检查它,但我无法在我的ListView组件中呈现它。渲染提取结果照常工作。
componentDidMount() {
let ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
let query=realm.objects('QueryObjects');
this.setState({
dataSource:ds.cloneWithRows(query)
})
}
render() {
return (
<View style={{flex: 1}}>
<ListView
dataSource={this.state.dataSource}
renderRow={(rowData) =>
<View style={{flex: 1, flexDirection: 'row'}}>
<View
style={{flex:2}} >
<TouchableHighlight onPress={() => this.onLearnMore(rowData)}>
<Text
>{rowData.title}</Text>
</TouchableHighlight>
</View>
<View style={{flex:1, paddingLeft: 5}} >
<TouchableHighlight onPress={() => this.onLearnMore(rowData)}>
<Text>{rowData.price}</Text>
</TouchableHighlight>
</View>
</View>
}
/>
</View>
);
}
这不起作用。但是,如果我尝试为领域查询调用map函数,我可以在控制台中看到每个查询元素的正确数据。