我正在使用这个库:https://github.com/andpor/react-native-sqlite-storage用于我的反应原生项目.
我从数据库中检索单行,如下所示:
db.transaction((tx) => {
tx.executeSql('SELECT * FROM user where id = 1', [], (tx, results) => {
console.log("Query completed");
var len = results.rows.length;
if (len > 0) {
let row = results.rows.item(0);
this.setState({userName: row.name});
}
});
});
return (
<View>
<Text>{this.state.userName}</Text>
</View>
)
但现在我想从数据库中获取所有数据,告诉我在下面的代码中我做了什么错:
db.transaction((tx) => {
tx.executeSql('SELECT * FROM user', [], (tx, results) => {
console.log("Query completed");
var len = results.rows.length;
for (let i = 0; i < len; i++) {
let row = results.rows.item(i);
this.setState({record: row.name});
}
});
});
return (
<View>
<FlatList data={this.state.record}
keyExtractor={(x,i) => 1}
renderItem={ ({item}) =>
<ListItem><Text>{item.name}</Text></ListItem>
}
/>
</View>
)
任何人都可以指导我如何在listview中显示数据库数据.
解决方法:
FlatList数据的状态值应该是一个数组,并且每次执行时都将其设置为单个字符串.
尝试更改它,如下所示
this.setState((prevState) => ({ record : prevState.record.push(row.name)}))
PS:您需要将记录的初始状态值设置为空数组左右.
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!