gpt4 book ai didi

javascript - React Native 自定义类不设置属性

转载 作者:行者123 更新时间:2023-11-29 02:29:38 25 4
gpt4 key购买 nike

我创建了一个名为 UserInfo 的类,其中我将用户信息存储在变量中,并在不同的屏幕中调用这些变量

    class UserInfo {
constructor(props) {
this.username = "Test"
}
}

export default (new UserInfo())

我在其他屏幕上这样调用它 UserInfo.username 并且它工作正常

但现在我想从本地数据库中检索用户信息,所以我在 UserInfo 类中创建了一个从本地数据库中获取数据的方法

    class UserInfo {
constructor(props) {
this.username = ""
this.getUserInfo
}

getUserInfo = () =>{
db.transaction((tx) => {
tx.executeSql('SELECT * FROM users', [], (tx, results) => {
let row = results.rows.item(0);
console.log("UserID: " + row.id) // return value from db, working
this.username = row.id
});
});
}

}

export default (new UserInfo())

但现在它返回空值,但在控制台中显示值,我是不是遗漏了什么。我通过在构造函数末尾调用 getUserInfo 方法重新设置用户名值...

最佳答案

db.transaction 是一个异步 调用,您可能会在 执行之前调用 UserInfo.username this.username = row.id 语句。不要直接访问 username,而是调用 UserInfo.getUserInfo() 并使用 promise 获取已解析的值,例如

UserInfo.getUserInfo().then(username => {
/* do whatever you want to do with username */
});

getUserInfo需要做的修改如下

getUserInfo = () => {
return new Promise((resove, reject) => {
db.transaction((tx) => {
tx.executeSql('SELECT * FROM users', [], (tx, results) => {
let row = results.rows.item(0);
console.log("UserID: " + row.id) // return value from db, working
this.username = row.id;

resolve(this.username);

}, (ts, err) => {
/* handle the failed case here */
reject();
});
});
});
}

希望这会有所帮助!

关于javascript - React Native 自定义类不设置属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50287504/

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