我只是继承了一些代码,其中有一些我有点担心的约定。它将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...
}
他们这样做似乎只是为了缩短代码(例如
fooNum
this.fooNum
)然而,在这样做的时候,感觉他们已经用可能引入bug的引用污染了本地范围,因为考虑到对可观察对象的需求。
不小心打字很容易
fooNum = 100;
而不是
this.fooNum = 100;
不会引发可观察的状态变化!
这个
mobx common pitfalls doc
警告不要在本地存储可观察项,但这有点不同,因为它们只是在本地作用域中声明的。
我反应过度了吗?这真的是mobx应用中常见的做法吗?