从数据库获取数据后,setState 在 React Native 中不起作用
2018-12-20
453
这是我第一次使用 React Native,我正在使用 MangoDB,我将记录存储在数据库中并获取记录,现在我想在 Flatlist 中显示,需要 setState() 但是它抛出了未定义的错误
db.find({}, function (err, docs) {
this.setState({ dataSource: docs });
});
docs 是用户数组,我能够在控制台中打印数据,它可以工作,但问题是如何使用 setState 在数据源中设置这些数据。
1个回答
这与您调用 setState 的方式有关。函数上下文中的
this
并未指向组件类。解决该问题的一种方法是使用箭头函数:
db.find({}, (err, docs) => {
this.setState({ dataSource: docs });
});
如果不能使用箭头函数,则可以手动将函数绑定到外部上下文:
function cb (err, docs) {
this.setState({ dataSource: docs });
}
db.find({}, cb.bind(this));
JavaScript 中
this
关键字背后的逻辑在以下问题中有详细讨论:
“this”关键字如何工作?
或者在这本 Kyle Simpson 撰写的精彩著作中:
YDKJS:this 和对象原型
Gleb Kostyunin
2018-12-20