从数据库中获取数据后,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
这是我第一天使用 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