【发布时间】:2021-03-27 02:39:08
【问题描述】:
我尝试从嵌入式 sqlite 数据库中获取数据并以列表格式显示。 fetchData() 函数正在工作,并返回正确的结果。但是,当我使用 setState() 更新状态时,react 没有重新渲染。 接下来,我尝试在 componentDidMount() 中使用数组 ['a','b','c'] 设置状态()。 React 确实重新渲染并显示了 a、b、c。
import React from 'react';
import sqlite3 from 'sqlite3';
type MyProps = { };
type MyState = { data: Array<string> };
class App extends React.Component<MyProps, MyState>{
constructor(props) {
super(props);
this.state = { data: [] };
}
async fetchData(){
var db = new sqlite3.Database({$DB_PATH});
var res: string[] = [];
await db.each('select * from table', [], (err, row) => { //selecting 10 rows from table
if (err) {
throw err;
}
res.push(row.name);
});
db.close();
console.log(this.state.data) //array length = 0
this.setState({data: res})
console.log(this.state.data) //array length = 10
}
async componentDidMount() {
await this.fetchData();
}
render() {
return (
<div>
<ul>
{this.state.data.map(el => (
<li>
{el}
</li>
))}
</ul>
</div>
);
}
}
export default App;
【问题讨论】:
-
谢谢!这解决了我的问题。
标签: javascript reactjs typescript electron