我刚刚继承了一些我有点担心的约定的代码。它正在使用mobx进行状态管理(这是我以前从未使用过的),而且我对自己不断看到的东西有疑问:
以前的作者喜欢在使用它们之前将其所有可观察的状态分解为局部变量:
@observer
class FooForm extends React.Component {
@observable
public fooString: string;
@observable
public fooNum: number;
@observable
public error: string;
@action public submitFoo = () => {
let {fooString, fooNum} = this; //for brevity?
if(!fooString.length){
this.error = 'Foo String must be set';
return;
}
if(!fooNum < 100){
this.error = 'fooNum must be at least 100';
this.fooNum = 100;
return;
}
//...submit
}
// render() and such...
}
似乎他们这样做只是为了尝试缩短其代码(例如,EG fooNum
与this.fooNum
),但是这样做似乎使他们污染了本地范围,而引用很可能鉴于可观察对象的要求,引入错误。
EG:很容易意外键入fooNum = 100;
而不是this.fooNum = 100;
,这不会触发可观察到的状态改变!
mobx common pitfalls doc确实警告不要在本地存储可观测对象,但这有点不同,因为它们只是在本地范围内声明的。
我反应过度了吗?这实际上是mobx应用程序中的惯例吗?
还是我有理由与他们一起提出来? (就像我说的,我是mobx的新手,所以我不知道这是什么规范。)