javascript - Mobx 类无法读取未定义的属性“正在加载”
问题描述
使用 create-react-app 创建 react-app
所以我使用 mobx 和 react 并创建了以下类:
import { action, decorate, observable } from "mobx";
class AuthStore {
loading = false;
login() {
console.log(this.loading);
}
}
decorate(AuthStore, {
loading: observable,
login: action
});
export default AuthStore;
它说加载是未定义的,但我不知道为什么......
解决方案
错误不是说loading
未定义,而是说this
是。
的值this
取决于login
调用的上下文,而不是声明的位置。我没有看到login
在类中被调用,这意味着它不会引用类实例。
最简单的解决方案是将函数转换为使用词法范围的箭头语法(它将具有this
引用类)。
login = () => {
console.log(this.loading);
}
另一种不太简洁的解决方案是手动绑定this
到构造函数中的函数。
class AuthStore {
constructor() {
this.login = this.login.bind(this)
}
loading = false;
login() {
console.log(this.loading);
}
}
它会产生同样的效果。
推荐阅读
- regex - .NET Core 中的正则表达式验证
- r - 如何计算患者基因的每个表达水平并计算它们的频率
- java - Spring Data Mongodb 将整个文档替换为 json
- css - Material-UI:不支持网格对齐的非无单位线高。改用无单位的行高
- linux - Ubuntu 16.04:-sh:来源:未找到
- javascript - NodeJs SQL 从数据库查询时间,但显示不同的输出
- matlab - Matlab 中的共享脚本
- python - Django通过ForeignField相关的表进行聚合
- botframework - 如何在 botbuilder JS 中为展开的团队使用自适应卡片?
- python - 与 POST 数据相关的类型错误应该是字节