Javascript 从数据库获取数据后,setState在react native中不工作

Javascript 从数据库获取数据后,setState在react native中不工作,javascript,reactjs,react-native,setstate,Javascript,Reactjs,React Native,Setstate,这是我使用react native的第一天,我正在使用mangodb,我将记录存储在db中并获取记录,现在我想在flatlist中显示,需要设置state(),但它会抛出未定义的错误 db.find({}, function (err, docs) { this.setState({ dataSource: docs }); }); docs是一个用户数组,我可以在控制台中打印数据,但问题是如何使用setState在datasource中设置此数据。这与您调用setState

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

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

docs是一个用户数组,我可以在控制台中打印数据,但问题是如何使用setState在datasource中设置此数据。

这与您调用setState的方式有关<代码>此在函数上下文中未指向组件类。解决此问题的一种方法是使用箭头函数:

db.find({}, (err, docs) => {
      this.setState({ dataSource: docs });   
});
如果无法使用箭头函数,可以手动将函数绑定到外部上下文:

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

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

javascript中
这个
关键字背后的逻辑在这个问题中进行了详细讨论:或者在凯尔·辛普森(Kyle Simpson)的这本了不起的书中:

它与调用setState的方式有关<代码>此在函数上下文中未指向组件类。解决此问题的一种方法是使用箭头函数:

db.find({}, (err, docs) => {
      this.setState({ dataSource: docs });   
});
如果无法使用箭头函数,可以手动将函数绑定到外部上下文:

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

db.find({}, cb.bind(this));
javascript中
这个
关键字背后的逻辑在这个问题中进行了详细讨论:或者在Kyle Simpson的这本神奇的书中: