gpt4 book ai didi

javascript - 从数据库获取数据后,setState 在 native react 中不起作用

转载 作者:行者123 更新时间:2023-11-28 12:14:00 25 4
gpt4 key购买 nike

这是我使用 React Native 的第一天,我正在使用 mangodb,我将记录存储在数据库中并获取记录,现在我想在平面列表中显示,并且需要 setState() 但它会抛出未定义的错误

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

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

最佳答案

这和你调用setState的方式有关。函数上下文中的 this 并未指向组件类。解决这个问题的一种方法是使用箭头函数:

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

如果您无法使用箭头函数,您可以手动将函数绑定(bind)到外部上下文:

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

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

JavaScript 中 this 关键字背后的逻辑在这个问题中有详细讨论:How does the "this" keyword work?或者在凯尔·辛普森(Kyle Simpson)这本精彩的书中:YDKJS: this & object prototypes

关于javascript - 从数据库获取数据后,setState 在 native react 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53869743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com