从数据库中获取数据后,setState 在 React Native 中不起作用

setState not working in react native after fetching data from database

这是我第一天使用 react native,我正在使用 mangodb,我将记录存储在 db 中并获取记录,现在我想在 flatlist 中显示,并且需要 setState() 但它会抛出未定义的错误

db.find({}, function (err, docs) {
      this.setState({ dataSource: docs });   
});

docs 是用户数组,我可以在控制台中打印数据,它可以正常工作,但问题是如何使用 setState 在数据源中设置此数据。

这与你调用setState的方式有关。 this 在您的函数上下文中未指向组件 class。解决它的一种方法是使用箭头函数:

db.find({}, (err, docs) => {
      this.setState({ dataSource: docs });   
});

如果不能使用箭头函数,可以手动将函数绑定到外部上下文:

function cb (err, docs) {
      this.setState({ dataSource: docs });   
}

db.find({}, cb.bind(this));

javascript 中 this 关键字背后的逻辑在这个问题中有详细讨论:How does the "this" keyword work? Or in this amazing book by Kyle Simpson: YDKJS: this & object prototypes